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 相关文章推荐
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
给html超链接设置事件不使用href来完成跳
Apr 20 Javascript
javascript解析json实例详解
Nov 05 Javascript
jquery插件ajaxupload实现文件上传操作
Dec 09 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
jQuery Validate 校验多个相同name的方法
May 18 jQuery
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
layui实现二维码弹窗、并下载到本地的方法
Sep 25 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 Javascript
学前端,css与javascript重难点浅析
Jun 11 Javascript
通过实例解析javascript Date对象属性及方法
Nov 04 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获取网卡地址的代码
2008/04/09 PHP
php 正则表达式小结
2009/08/31 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
php命名空间学习详解
2014/02/27 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
php 多文件上传的实现实例
2016/10/23 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
vue视频播放暂停代码
2019/11/08 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
python中的多重继承实例讲解
2014/09/28 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
工程师求职简历的自我评价分享
2013/10/10 职场文书
应届专科生个人的自我评价
2014/01/05 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
2014年医院工作总结
2014/11/20 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python