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 相关文章推荐
jQuery 1.5最新版本的改进细节分析
Jan 19 Javascript
利用原生JavaScript获取元素样式只是获取而已
Oct 08 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
jquery实现的Accordion折叠面板效果代码
Sep 02 Javascript
json对象与数组以及转换成js对象的简单实现方法
Jun 24 Javascript
工厂模式在JS中的实践
Jan 18 Javascript
js图片放大镜效果实现方法详解
Oct 28 Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 Javascript
js实现可以点击收缩或张开的悬浮窗
Sep 18 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 Javascript
vue中监听返回键问题
Aug 28 Javascript
vscode 调试 node.js的方法步骤
Sep 15 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
新浪SAE搭建PHP项目教程
2015/01/28 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
基于php实现的验证码小程序
2016/12/13 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
js打造数组转json函数
2015/01/14 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
Python实现批量下载文件
2015/05/17 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python tkinter模版代码实例
2020/02/05 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
如何通过python计算圆周率PI
2020/11/11 Python
《小小竹排画中游》教学反思
2014/02/26 职场文书
励志演讲稿300字
2014/08/21 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
学校党支部承诺书
2015/04/30 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS