vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
vue项目中使用AES实现密码加密解密
区别
ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。(不容易主动攻击,安全性好于ECB,是SSL、IPSec的标准)
代码实现
先安装 crypto-js
npminstallcrypto-js--save-dev
ECB模式:
importCryptoJSfrom"crypto-js"; exportdefault{ //加密 encrypt(word,keyStr){ keyStr=keyStr?keyStr:"absoietlj32fai12"; letkey=CryptoJS.enc.Utf8.parse(keyStr); letsrcs=CryptoJS.enc.Utf8.parse(word); letencrypted=CryptoJS.AES.encrypt(srcs,key,{ mode:CryptoJS.mode.ECB, padding:CryptoJS.pad.Pkcs7 }); returnencrypted.toString(); }, //解密 decrypt(word,keyStr){ keyStr=keyStr?keyStr:"absoietlj32fai12"; varkey=CryptoJS.enc.Utf8.parse(keyStr); vardecrypt=CryptoJS.AES.decrypt(word,key,{ mode:CryptoJS.mode.ECB, padding:CryptoJS.pad.Pkcs7 }); returnCryptoJS.enc.Utf8.stringify(decrypt).toString(); } };
CBC模式:
importCryptoJSfrom"crypto-js"; exportdefault{ //加密 encrypt(word,keyStr,ivStr){ keyStr=keyStr?keyStr:"absoietlj32fai12"; ivStr=ivStr?ivStr:"absoietlj32fai12"; letkey=CryptoJS.enc.Utf8.parse(keyStr); letiv=CryptoJS.enc.Utf8.parse(ivStr); letsrcs=CryptoJS.enc.Utf8.parse(word); letencrypted=CryptoJS.AES.encrypt(srcs,key,{ iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.ZeroPadding }); returnencrypted.toString(); }, //解密 decrypt(word,keyStr,ivStr){ keyStr=keyStr?keyStr:"absoietlj32fai12"; ivStr=ivStr?ivStr:"absoietlj32fai12"; varkey=CryptoJS.enc.Utf8.parse(keyStr); letiv=CryptoJS.enc.Utf8.parse(ivStr); vardecrypt=CryptoJS.AES.decrypt(word,key,{ iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.ZeroPadding }); returndecrypt.toString(CryptoJS.enc.Utf8); } };
以上两种模式中的 keyStr的长度要不小于14位,否则解密时会显示空白
总结
以上所述是小编给大家介绍的vue项目中使用AES实现密码加密解密(ECB和CBC两种模式),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!