广告位联系
返回顶部
分享到

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

JavaScript 来源:互联网搜集 作者:秩名 发布时间:2019-08-12 17:34:22 人浏览
摘要

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位,否则解密时会显示空白

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://segmentfault.com/a/1190000020044916
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计