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学习之一个简易的日历控件
Mar 24 Javascript
this和执行上下文实现代码
Jul 01 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
简单实用jquery版三级联动select示例
Jul 04 Javascript
js拼接html注意问题示例探讨
Jul 14 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
详解JavaScript中|单竖杠运算符的使用方法
May 23 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
vue.js入门教程之计算属性
Sep 01 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
Aug 16 Javascript
小程序从手动埋点到自动埋点的实现方法
Jan 24 Javascript
vue element upload实现图片本地预览
Aug 20 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获得文件扩展名三法
2006/11/25 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
vue实现日历表格(element-ui)
2020/09/24 Javascript
在nodejs中创建child process的方法
2021/01/26 NodeJs
Python 用户登录验证的小例子
2013/03/06 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
Java servlet面试题
2012/03/04 面试题
主题酒店策划书
2014/01/28 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
活动策划求职信模板
2014/04/21 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
沈阳故宫导游词
2015/01/31 职场文书
实习生辞职信范文
2015/03/02 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
入党介绍人考察意见
2015/06/01 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android