欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)

程序员文章站 2022-11-22 22:27:39
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两种模式),希望对大家有所帮助