AES加解密
1、引入包
npm i crypto-js --save-dev
2、utils目录下创建AES.js文件
import CryptoJS from "crypto-js";
//随机生成指定数量的32进制key
export default {
// 随机生成字符串
generatekey(num) {
let library =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let key = "";
for (let i = 0; i < num; i++) {
let randomPoz = Math.floor(Math.random() * library.length);
key += library.substring(randomPoz, randomPoz + 1);
}
return key;
},
//加密
encrypt(word, keyStr) {
// 判断是否存在keyStr,不存在就用默认的keyStr(注意:这个keyStr必需要前后端统一,不然双方加密解密后会不相同。调用generatekey方法生成)
keyStr = keyStr ? keyStr : "1grLx91U40VawzhRAm7E";
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 : "1grLx91U40VawzhRAm7E";
let key = CryptoJS.enc.Utf8.parse(keyStr);
let decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
};
3、在组件中使用
加密:
// 随机生成32位的字符串
this.keyStr = this.$aes.generatekey(32);
// 加密
this.$aes.encrypt('要加密的明文', this.keyStr);
解密:
this.$aes.decrypt('加密之后的密文', this.keyStr);