因项目需求,需要对ajax的请求不为明文,方法为加密;之前没有搞过,所以遇到了许多坑
方式(AES)
引用方式:
//AES
function aesEncrypt(text,key){
var encryptedData = CryptoJS.AES.encrypt(text, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
//iv:iv
});
var encryptedBase64Str = encryptedData.toString();
//var encryptedStr = encryptedData.ciphertext.toString();
return encryptedBase64Str;
}
console.log(param)
var encrypt = aesEncrypt(param,publicKey);
var encryptStr = aesEncrypt(param,publicKey);
console.log(encryptStr)
缺陷:js端拿到密钥后,容易获取到,易破解
方式:RSA
引用方式:
function bodyRSA(text,key) {
setMaxDigits(130);
var key = new RSAKeyPair("10001","",key);
return encryptedString(key, encodeURIComponent(text));
}
var encrypt = new JSEncrypt();
encrypt.setPublicKey(encryptKey);
var encryptStr = encrypt.encrypt(param);
console.log(encryptStr);
缺陷:公钥加密,私钥解密,但加密长度受限(117位经测试)
注:key的前后应该加上