下载cryptoJs加密解密库 npm install crypto-js
引入对应的加密解密文件
const CryptoJS = require('./aes.js'); //引用AES源码js 32位字母加数字加密解密
const CryptoJS = require('./crypto-js'); //特殊字符加密解密
const KEY = CryptoJS.enc.Utf8.parse("1234567890987654"); //十六位十六进制数作为秘钥
const IV = CryptoJS.enc.Utf8.parse('1234567890987654');//十六位十六进制数作为秘钥偏移量
/**
* aes 解密方法带有偏移量
*/
function AesDecrypt(word) {
let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
let decrypt = CryptoJS.AES.decrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
/**
* aes 加密方法带有偏移量
*/
function AesEncrypt(word) {
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.ciphertext.toString().toUpperCase();
}
/**
* crypto-js 解密方法
*/
function AesDecrypt(word, keyStr , ivStr) {
let key = KEY
let iv = IV
if(keyStr){
Key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let Base64 = CryptoJS.enc.Base64.parse(word);
let srcs = CryptoJS.enc.Base64.stringify(Base64);
let decrypt = CryptoJS.AES.decrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
/**
* crypto-js 加密方法
*/
function AesEncrypt(word, keyStr , ivStr) {
let key = KEY
let iv = IV
if(keyStr){
Key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
// 导出
module.exports = {
AesEncrypt,
AesDecrypt
}