Javascript加密和解密URL编码
今天,在一个老项目中,我们遇到了一个要求,在Javascript中对URL中的参数进行加密和解密,并从Internet中找到有用的代码。复制代码代码如下所示:
<!——开始
加密函数(STR,PWD){
如果返回;
逃离(STR);
如果(pwd pwd = = | |!){ var pwd = } 1234 ;
密码=逃避(PWD);
如果(PWD = = null | | pwd.length <= 0){
警报()请输入一个加密消息的密码;
返回null;
}
无功性= ;
对于(var i = 0;i < pwd.length;i++){
性= pwd.charcodeat(我)(ToString);
}
var SPOS= math.floor(prand.length / 5);
无功多= parseInt(prand.charat(SPOS)+ prand.charat(SPOS×2)+ prand.charat(SPOS×3)+ prand.charat(SPOS×4)+定时性。);
var增加= math.ceil(pwd.length / 2);
VaR math.pow冒顿=(2, 31)- 1;
如果(多<2){
警报()算法找不到合适的散列。请选择一个不同的A
返回null;
}
VaR盐= math.round(Math.random()×1000000000)% 100000000;
盐性=;
而(prand.length > 10){
性=(parseInt(prand.substring(0, 10))+ parseInt(prand.substring(10,性。长ToString())));
}
性=(多*性+增加模块)%;
无功enc_chr = ;
无功enc_str = ;
对于(var i = 0;i < str.length;i++){
enc_chr = parseInt(str.charcodeat(我)^ math.floor((公关/模块)* 255)));
如果(enc_chr<16){
enc_str = 0 +(16)enc_chr.tostring;
}其他
enc_str = enc_chr.tostring(16);
性=(多*性+增加模块)%;
}
盐= salt.tostring(16);
而(salt.length<8)盐=0+盐;
enc_str =盐;
返回enc_str;
}
解密函数(STR,PWD){
如果返回;
如果(pwd pwd = = | |!){ var pwd = } 1234 ;
密码=逃避(PWD);
如果(str = = null | | { str.length<8)
警报(无法从加密消息中提取盐值);
返回;
}
如果(PWD = = null | | pwd.length <= 0){
警报()请输入一个用于解密消息的密码;
返回;
}
无功性= ;
对于(var i = 0;i < pwd.length;i++){
性= pwd.charcodeat(我)(ToString);
}
var SPOS= math.floor(prand.length / 5);
无功多= parseInt(prand.charat(SPOS)+ prand.charat(SPOS×2)+ prand.charat(SPOS×3)+ prand.charat(SPOS×4)+定时性。);
var增加= math.round(pwd.length / 2);
VaR math.pow冒顿=(2, 31)- 1;
VaR盐= parseInt(str.substring(str.length - 8,str.length),16);
STR = str.substring(0,str.length - 8);
盐性=;
而(prand.length > 10){
性=(parseInt(prand.substring(0, 10))+ parseInt(prand.substring(10,性。长ToString())));
}
性=(多*性+增加模块)%;
无功enc_chr = ;
无功enc_str = ;
对于(var i = 0;i < str.length;我+ = 2){
enc_chr = parseInt(parseInt(str.substring(I,I + 2),16)^ math.floor((公关/模块)* 255)));
enc_str = String.fromCharCode(enc_chr);
性=(多*性+增加模块)%;
}
返回unescape(enc_str);
}
/结束/
加密解密后,上面的代码直接写入js文件,这样就可以了。