vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
程序员文章站
2022-05-14 15:25:58
vue项目中使用aes实现密码加密解密
区别
ecb:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
cbc...
vue项目中使用aes实现密码加密解密
区别
ecb:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
cbc:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。(不容易主动攻击,安全性好于ecb,是ssl、ipsec的标准)
代码实现
先安装 crypto-js
npm install crypto-js --save-dev
ecb模式:
import cryptojs from "crypto-js"; export default { // 加密 encrypt(word, keystr) { keystr = keystr ? keystr : "absoietlj32fai12"; let key = cryptojs.enc.utf8.parse(keystr); let srcs = cryptojs.enc.utf8.parse(word); let encrypted = cryptojs.aes.encrypt(srcs, key, { mode: cryptojs.mode.ecb, padding: cryptojs.pad.pkcs7 }); return encrypted.tostring(); }, // 解密 decrypt(word, keystr) { keystr = keystr ? keystr : "absoietlj32fai12"; var key = cryptojs.enc.utf8.parse(keystr); var decrypt = cryptojs.aes.decrypt(word, key, { mode: cryptojs.mode.ecb, padding: cryptojs.pad.pkcs7 }); return cryptojs.enc.utf8.stringify(decrypt).tostring(); } };
cbc模式:
import cryptojs from "crypto-js"; export default { // 加密 encrypt(word, keystr, ivstr) { keystr = keystr ? keystr : "absoietlj32fai12"; ivstr = ivstr ? ivstr : "absoietlj32fai12"; let key = cryptojs.enc.utf8.parse(keystr); let iv = cryptojs.enc.utf8.parse(ivstr); let srcs = cryptojs.enc.utf8.parse(word); let encrypted = cryptojs.aes.encrypt(srcs, key, { iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.zeropadding }); return encrypted.tostring(); }, // 解密 decrypt(word, keystr, ivstr) { keystr = keystr ? keystr : "absoietlj32fai12"; ivstr = ivstr ? ivstr : "absoietlj32fai12"; var key = cryptojs.enc.utf8.parse(keystr); let iv = cryptojs.enc.utf8.parse(ivstr); var decrypt = cryptojs.aes.decrypt(word, key, { iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.zeropadding }); return decrypt.tostring(cryptojs.enc.utf8); } };
以上两种模式中的 keystr 的长度要不小于14位,否则解密时会显示空白
总结
以上所述是小编给大家介绍的vue项目中使用aes实现密码加密解密(ecb和cbc两种模式),希望对大家有所帮助