一、安装crypto-js
npm install crypto-js
二、封装AES文件
import CryptoJS from "crypto-js";
/**
*
* 第一个参数word是待加密或者解密的字符串;
* 第二个参数keyStr是aes加密需要用到的16位字符串的key;
*
* 如果想对一个js对象加密,需要先把该对象转成json字符串。
*/
export default {
// 加密
encrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "";
let key = CryptoJS.enc.Utf8.parse(keyStr);
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
},
// 解密
decrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "";
var key = CryptoJS.enc.Utf8.parse(keyStr);
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
};
三、使用
import AES from "AES.js";
AES.encrypt(word, keyStr)
四、假如key秘钥不足16位 则用 '\0' 补齐
"Zhtx2020" => "Zhtx2020\0\0\0\0\0\0\0\0"
五、加密测试
加密测试:
test >> OE5W6WCqWBUbwFU5G2Bu0w==
加密hex输出
encrypted = encrypted.ciphertext.toString();
let encryptedHexStr = CryptoJS.enc.Hex.parse(encrypted)
test >> 384e56e960aa58151bc055391b606ed3