Loading... 安装`crypto-js` 首先我们要引入 `crypto-js` ,`crypto-js` 是一个纯 `javascript` 写的加密算法类库 ,可以非常方便地在 `javascript` 进行 `MD5`、`SHA1`、`SHA2`、`SHA3`、`RIPEMD-160` 哈希散列,进行 `AES`、`DES`、`Rabbit`、`RC4`、`Triple DES` 加解密 `npm install crypto-js` 也可以直接去 [GitHub](https://github.com/brix/crypto-js)下载源码~ ```javascript const CryptoJS = require('crypto-js'); //引用AES源码js const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF"); //十六位十六进制数作为密钥 const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量 //解密方法 function DecryptHex(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(); } //加密方法 function EncryptHex(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(); } function DecryptBase64(data,key,iv){//加密 var key = CryptoJS.enc.Utf8.parse(key); var iv = CryptoJS.enc.Utf8.parse(iv); var encrypted =CryptoJS.AES.encrypt(data,key, { iv:iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.Pkcs7 }); return encrypted.toString(); //返回的是base64格式的密文 } function EncryptBase64(encrypted,key,iv){//解密 var key = CryptoJS.enc.Utf8.parse(key); var iv = CryptoJS.enc.Utf8.parse(iv); var decrypted =CryptoJS.AES.decrypt(encrypted,key, { iv:iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } export default { DecryptHex, EncryptHex, DecryptBase64, EncryptBase64 } ``` `key` 是密钥 ,`iv` 是密钥偏移量,这个一般是接口返回的,为了方便,我们这里就直接在这里定义了。 值得注意的是密钥的长度,由于对称解密使用的算法是 `AES-128-CBC`算法,数据采用 `PKCS#7` 填充 , 因此这里的 `key` 需要为16位! 接着我们定义了 **解密方法`Decrypt`** 和 **加密方法 `Encrypt`** ,最后通过 `export default` 将其暴露出去,方便在需要的时候进行引入 最后修改:2021 年 07 月 11 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
此处评论已关闭