1、引入crypto-js.js
2、在utils文件夹下新建aes.js,封装加密,解密方法
以ECB模式为例
const CryptoJS = require('crypto-js');
// 默认的 KEY 与 iv 如果没有给
const KEY = CryptoJS.enc.Utf8.parse('QDCARES20240307Y'); // 十六位十六进制数作为密钥
const IV = CryptoJS.enc.Utf8.parse('RTGEtgd12ytb67VR'); // 十六位十六进制数作为密钥偏移量
/**
* AES加密 :字符串 key iv 返回base64
* 把默认的KEY 与 iv赋值给变量
* 如果有keyStr 重新赋值密钥
* 重新设置密钥偏移量
*/
function encrypted(word, keyStr, ivStr) {
let key = KEY;
let iv = IV;
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
const srcs = CryptoJS.enc.Utf8.parse(word);
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv, // 偏移量
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
// 解密
function decrypted(word, keyStr, ivStr) {
let key = KEY;
let iv = IV;
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
const base64 = CryptoJS.enc.Base64.parse(word);
const src = CryptoJS.enc.Base64.stringify(base64);
const decrypted = CryptoJS.AES.decrypt(src, key, {
iv, // 偏移量
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
module.exports = {
encrypted,
decrypted
};
3、使用
加密使用
解密使用