在项目上npm安装crypto-js
npm install crypto-js
在项目里创建个文件.js
在secret.js里引入 const CryptoJS = require('crypto-js');
在里面写入两个方法
// 定义keyStr 和 ivStr
const keyStr = "icklsdufidsakdfa"; //十六位十六进制数作为密钥
const ivStr = 'icklsdufidsakdfa'; // 偏移量
// 加密方法
function Encrypt(data) {
var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr);
var encrypted = CryptoJS.AES.encrypt(data, key, {
iv: iv,
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
//返回的是base64格式的密文
return encrypted.ciphertext.toString();
}
// 解密方法
// encrypted 为是base64格式的密文
function Decrypt(encrypted) {
// 拿到字符串类型的密文需要先将其用Hex方法parse一下
var encryptedHexStr = CryptoJS.enc.Hex.parse(encrypted);
// 将密文转为Base64的字符串
// 只有Base64类型的字符串密文才能对其进行解密
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr);
var decrypt = CryptoJS.AES.decrypt(encryptedBase64Str, key, { iv: iv, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return CryptoJS.enc.Utf8.stringify(decrypt)
}
// 测试加解密
function testAES() {
var data = { name:"1234567890123456",nn:[1,2,3]}; // 明文
let op = JSON.stringify(data);
// 测试加密
var encrypted = Encrypt(op); // 密文
console.log("加密后: ", encrypted);
var decryptedStr = Decrypt(encrypted);
console.log("解密后: ",JSON.parse(decryptedStr));
}
testAES()
// 浏览器打印结果
// 导出方法,以便其他地方调用
export default {
Decrypt,
Encrypt
}
// 在项目里全局引用 (我这边是放到了vue项目的main.js)
import AES from '@/common/js/secret'
Vue.prototype.AES = AES
// 其他需要的地方直接
this.AES.Encrypt(‘要加密数据’)
this.AES.Decrypt(‘要解密数据’)
// 局部引用类似我这边就不写了反正在你要用的地方单独引入去用就好,一样滴