❶ ajax請求的URL可以加密嗎
可以加密,而且對伊一些敏感度搞的項目更要加設置加密:
首先是密鑰交換的過程,Diffie-Hellman密鑰交換演算法參考維基網路的文檔:http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange ,client端js語言,服務端php語言 用DH密鑰交換演算法交換密鑰。
js部分:
varg="2";
varp="28303789813787064911279666129";
functiondoStaff(){
varbig_a=randBigInt(100);
varbig_p=str2bigInt(p,10,0);
varbig_g=str2bigInt(g,10,0);
varA=powMod(big_g,big_a,big_p);
varstr_A=bigInt2str(A,10);
varB;
varsecret;
$.ajax({
url:'server.php',
type:'GET',
async:false,
data:{"A":str_A},
cache:false,
timeout:5*1000,
dataType:'json',
success:function(data,status,xhr){
B=str2bigInt(data.B,10,0);
},
error:function(){
alert(2);
}
});
secret=powMod(B,big_a,big_p);
secret=bigInt2str(secret,10);
註明:上邊的代碼中,最後的到的secret,就是最終和服務端協商一致的密鑰(這是一個很多位數字的字元串,我們的密鑰使用16位元組,那麼我們可以考慮對它md5,作為對稱加密的密鑰)。
上述代碼中bigint相關的js,直接使用的一個開源的bigint.js(js代碼有不開源的嗎?^_^)。
php部分:
<?php
$g="2";
$p="28303789813787064911279666129";
$b="86410430023";//TODO:.
$A=$_REQUEST['A'];
$B=bcpowmod($g,$b,$p);
$secret=bcpowmod($A,$b,$p);
echo'{"B":"'.$B.'"}';
可見我們採用固定的g和p,這2個變數是公開的,不怕泄漏。
js端首先生成一個100bit長的整數a,並依據公式計算出A, 用ajax的形式發送到服務端php。 服務端收到A,自己生成變數b,依據公式計算出B,響應給客戶端js。
此時,服務端和客戶端分別可以依據公式計算出一個相同的secret。 這個secret沒有在網路中傳輸過,雙方可說是「心照不宣」,且雙方自己選定的a和b是保密的,第三方無法根據公開傳輸的數據推算出a,b,當然也無法得到secret。 這就是DH演算法的原理。
❷ 如何修改form表單中的input值並加密
AJAX傳輸過程會被抓包,而且不是加密的,明文可讀
最簡單的,應該在提交前,在伺服器生成秘鑰,然後再客戶端和服務端分別存一份,提交前用js進行加密,傳到服務端後進行利用秘鑰驗證,再進行其他的二次加密、解密或保存等操作
❸ sha1加密處理中文時在js和php中不一樣怎麼辦!如何處理!!!
前端對來中文進行encodeURI,這樣中文就會源變成字元,英文和數字,再對其進行sha1加密,就可以和php的一致了,之後在後端用urldecode還原為中文就行了。前端和後端的URL編碼函數是不同的需要注意。