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


Posted in Javascript onAugust 12, 2019

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

Javascript 相关文章推荐
Add Formatted Text to a Word Document
Jun 15 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
window.dialogArguments 使用说明
Apr 11 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
jQuery动态生成Bootstrap表格
Nov 01 Javascript
浅析Ajax语法
Dec 05 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
Feb 26 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
Sep 16 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
Sep 20 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 Javascript
微信小程序实现弹出菜单
Jul 19 Javascript
vue中echarts引入中国地图的案例
Jul 28 Javascript
详解json串反转义(消除反斜杠)
Aug 12 #Javascript
json 带斜杠时如何解析的实现
Aug 12 #Javascript
electron实现静默打印的示例代码
Aug 12 #Javascript
微信小程序 弹窗输入组件的实现解析
Aug 12 #Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
Aug 12 #Javascript
ElementUI radio组件选中小改造
Aug 12 #Javascript
Vue 3.0 前瞻Vue Function API新特性体验
Aug 12 #Javascript
You might like
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
BootStrap selectpicker
2016/06/20 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
浅谈对yield的初步理解
2017/05/29 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
python3 map函数和filter函数详解
2019/08/26 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
学校爱心捐款倡议书
2014/05/13 职场文书
会计专业自荐信
2014/06/03 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
经销商会议开幕词
2016/03/04 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
python如何在word中存储本地图片
2021/04/07 Python