- 第一步确保有node.js 执行以下命令:
2.在项目的src下的utils的文件夹里的utils引入安装好的js
3.封装加密的函数,如下:
// data:要加密的字符串
// key:秘钥
// iv:偏移量
export function encrypt(key, iv, data) {
if (typeof data === 'object') {
// 如果传入的data是json对象,先转义为json字符串
try {
data = JSON.stringify(data);
} catch (error) {
console.log('error:', error);
}
}
// 统一将传入的字符串转成UTF8编码,这里的key一般是后端生成
const dataHex = CryptoJS.enc.Utf8.parse(data); // 需要加密的数据
const keyHex = CryptoJS.enc.Utf8.parse(key); // 秘钥
const ivHex = CryptoJS.enc.Utf8.parse(iv); // 偏移量
const encrypted = CryptoJS.AES.encrypt(dataHex, keyHex, {
iv: ivHex,
mode: CryptoJS.mode.CBC, // 加密模式
padding: CryptoJS.pad.Pkcs7,
});
let encryptedVal = encrypted.ciphertext.toString();
return encryptedVal; // 返回加密后的值
}
4.封装解密的函数,如下:
// data:要解密的字符串
// key:秘钥
// iv:偏移量
export function decrypt(key, iv, data) {
/*
传入的key和iv需要和加密时候传入的key一致
*/
// 统一将传入的字符串转成UTF8编码
let encryptedHexStr = CryptoJS.enc.Hex.parse(data);
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
const keyHex = CryptoJS.enc.Utf8.parse('key'); // 秘钥
const ivHex = CryptoJS.enc.Utf8.parse(iv); // 偏移量
let decrypt = CryptoJS.AES.decrypt(srcs, keyHex, {
iv: ivHex,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
5.然后在需要这两个函数的地方引入,如图:
6.接下来做个演示,如何运用这两个函数,以确保运用正确。
得到的结果:
到这里来加密解密就写好了,一般是前端加密,后端去解密,大家灵活运用哦!