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两种模式),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!