JavaScript加密库crypto-js及node-forge。其中crypto-js的3.1.9-1版对低版本的IE也是兼容的。
引入CDN
<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
加解密JS
// 十六位十六进制数作为密钥
const key = CryptoJS.enc.Utf8.parse("1234567890hijklm");
// 十六位十六进制数作为密钥偏移量
const iv = CryptoJS.enc.Utf8.parse('1234567890abcdef');
//解密方法
function myDecrypt(word) {
let encryptedHexStr = CryptoJS.enc.Base64.parse(word)
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
let decrypt = CryptoJS.AES.decrypt(srcs, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
//加密方法
function myEncrypt(word) {
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
//return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
return encrypted.ciphertext.toString();
}
使用
const pwd = '123456';
const decPwd = myEncrypt(pwd);
console.log('-----原密码-----', pwd);
console.log('-----加密后-----', decPwd);
console.log('-----解密后-----', myDecrypt(decPwd));