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多浏览器捕捉回车事件代码
Jun 22 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
jquery实现简单实用的轮播器
May 23 jQuery
Vue之Watcher源码解析(2)
Jul 19 Javascript
使用axios实现上传图片进度条功能
Dec 21 Javascript
vue中实现图片和文件上传的示例代码
Mar 16 Javascript
ajax与jsonp的区别及用法
Oct 16 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 Javascript
学前端,css与javascript重难点浅析
Jun 11 Javascript
区分vue-router的hash和history模式
Oct 03 Javascript
JavaScript控制台的更多功能
Apr 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 一元分词算法
2009/11/30 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
jQuery 版元素拖拽原型代码
2011/04/25 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python+matplotlib实现华丽的文本框演示代码
2018/01/22 Python
实例讲解python中的协程
2018/10/08 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
期终自我鉴定
2014/02/17 职场文书
社区消防工作实施方案
2014/03/21 职场文书
家长对孩子的评语
2014/04/18 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
小学生思想品德评语
2014/12/31 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python