CryptoJS 前端加密解密踩坑 |
您所在的位置:网站首页 › js双引号md5加密异常 › CryptoJS 前端加密解密踩坑 |
原本的项目之前在接口传参的时候是有用了加密的,后面又有字段需要解密展示,原本的加密方法如下: npm i crypto-js --save import CryptoJS from 'crypto-js'; let key = 'xxxxxxxx' let iv = 'xxxxxx' export function getAES (originData) { let data = CryptoJS.enc.Utf8.parse(originData); let key = CryptoJS.enc.Utf8.parse(key); let iv = CryptoJS.enc.Utf8.parse(iv); let encrypted = CryptoJS.AES.encrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.ciphertext.toString(); }然后一开始后端还没部署,我就先拿了本地没加密的数据,自己先加密想着看看解密出来对不对 export function getDecryptAES(word) { var decrypted = CryptoJS.AES.decrypt(word, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding, }); return decrypted.toString(CryptoJS.enc.Utf8);
然后才发现原来我的加密是用ciphertext 是处理为16进制,而工具默认是加密成base64格式的,所以! 我要解密的话,我应该要把16进制先转换成base64的,再进行解密!思路瞬间打开! export function getDecryptAES(word) { var encryptedHexStr = CryptoJS.enc.Hex.parse(word); var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr); //上面两行就是将16进制转化为base64 var decrypted = CryptoJS.AES.decrypt(encryptedBase64Str, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding, }); return decrypted.toString(CryptoJS.enc.Utf8);
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |