1.安装crypto-js
npm install crypto-js --save-dev
2.utils文件夹下,新建公共文件aes.js
import CryptoJS from 'crypto-js'
export default {
// 随机生成指定数量的16进制key
generatekey(num) {
var library = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let key = '';
for (var i = 0; i < num; i++) {
var randomPoz = Math.floor(Math.random() * library.length)
key += library.substring(randomPoz, randomPoz + 1)
}
return key
},
// 加密
encrypt(word) {
var keyStr = 'tdjyyxxytdjyyxxy'; // keyStr是aes加密需要用到的16位字符串的key
var key = CryptoJS.enc.Utf8.parse(keyStr)
var srcs = CryptoJS.enc.Utf8.parse(word)
var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7})
return encrypted.toString()
},
// 解密
decrypt(word) {
var keyStr = 'tdjyyxxytdjyyxxy'; // keyStr是aes加密需要用到的16位字符串的key
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()
}
}
3.使用加密解密
import AES from '@/utils/aes.js'
//加密
let par="稀土掘金"
console.log(AES.encrypt(par))
//解密
let res="a2RCbiJV6yamMyk5h8IkVA=="
console.log(AES.decrypt(res))
//对象加密,需要先把该对象转成json字符串
let par2={
name:'张三'
}
console.log(AES.encrypt(JSON.stringify(par2)))
//对象解密
let res2="er4u8rFT28RbQc4wuSlNgFGZZqXVVZYTUwB+RbuTaa0="
console.log(JSON.parse(AES.decrypt(res2)))