什麼是AES對稱加密?
1、aes對稱加密是最快速、簡單的一種加密方式,加密(encryption)、解密(decryption)使用的是同一套密鑰(secret key);
2、aes(advanced Encryption standard)高級加密標準,是最常見的對稱加密算法(微信小程序的加密傳輸就是用的這套加密算法),簡而言之,對稱加密就是加密解密使用的是同一套密鑰,適用於經常發送數據的場合;
3、非對稱加密:加密和解密的密鑰是不相同的,通常加密的速度比較慢,適合偶爾發送數據的場合;
前端加密、解密具體使用
1、首先我們要在目標文件夾中引入js文件,
2、其次在需要使用加密、解密的頁面上進行引入,
<script type="text/javascript" src="js/aes.js"></script>
3、最後我們就開始在頁面上進行加、解密操作;
======加密===========
var params={"jkhtbh":htbh,"ksrq":date,"jsrq":date1,"page":"1","size":"9999"};
//祕鑰
var aesKey = 'gOuWYBjME1cVtc5S';
//將祕鑰轉換成Utf8字節數組key
var key = CryptoJS.enc.Utf8.parse(aesKey);
//這裏把我們得到的json對象轉化成字符串
srcs = CryptoJS.enc.Utf8.parse(JSON.stringify(params));
//對轉換後的字符進行加密
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
//把機密得到的字符串轉換成大寫字母
var jiami = encrypted.ciphertext.toString().toUpperCase();
//console.log("加密後的參數"+jiami);
console.log(jiami);
=====解密=======
//對res進行解密
success: function (res) {
$('#loading').hide();
$("#cxjg").show();
var encryptedHexStr = CryptoJS.enc.Hex.parse(res);
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
var decrypt = CryptoJS.AES.decrypt(encryptedBase64Str, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
var jiemi = decrypt.toString(CryptoJS.enc.Utf8);
//這裏將一個json字符串轉換成對象result
var result = JSON.parse(jiemi);
//console.log("後端接口返回的值解密:"+result);
console.log(result);
JSON.parse()和JSON.stringify()
parse用於從一個字符串中解析出json對象
如:
var str = '{"name":"huangxiaojian","age":"23"}'
結果:
JSON.parse(str)
Object
age: “23"
name: “huangxiaojian"
__proto__: Object
stringify()用於從一個對象解析出字符串
如:
var a = {a:1,b:2}
結果:
JSON.stringify(a)
"{"a":1,"b":2}”