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 相关文章推荐
了解一点js的Eval函数
Jul 26 Javascript
动态获取复选框checkbox选中个数的jquery代码
Jun 25 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
Dec 25 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
Mar 04 Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
Aug 02 Javascript
微信小程序 navigation API实例详解
Oct 02 Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 Javascript
js中DOM事件绑定分析
Mar 18 Javascript
Vue基础学习之项目整合及优化
Jun 02 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php标签云的实现代码
2012/10/10 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
php字符集转换
2017/01/23 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
js同时按下两个方向键
2007/12/01 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
Vue实现手机计算器
2020/08/17 Javascript
Python字符串处理之count()方法的使用
2015/05/18 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
结构工程研究生求职信
2013/10/13 职场文书
寄语是什么意思
2014/04/10 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
Mysql中存储引擎的区别及比较
2021/06/04 MySQL
Golang表示枚举类型的详细讲解
2021/09/04 Golang