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 相关文章推荐
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
jQuery获得子元素个数的方法
Apr 14 Javascript
浏览器兼容性问题大汇总
Dec 17 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
如何使用AngularJs打造权限管理系统【简易型】
May 09 Javascript
JS禁止查看网页源代码的实现方法
Oct 12 Javascript
ztree实现权限横向显示功能
May 20 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
Oct 16 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 Javascript
在vue项目中使用Jquery-contextmenu插件的步骤讲解
Jan 27 jQuery
JavaScript静态作用域和动态作用域实例详解
Jun 17 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
PHP的面试题集
2006/11/19 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
javascript回调函数详解
2018/02/06 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
写gulp遇到的ES6问题详解
2018/12/03 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python可变参数用法实例分析
2017/04/02 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
实习护理工作自我评价
2013/09/25 职场文书
会计专业自荐信
2013/12/02 职场文书
小孩百日宴答谢词
2014/01/15 职场文书
社区母亲节活动方案
2014/03/05 职场文书
食品采购员岗位职责
2014/04/14 职场文书
计算机毕业生求职信
2014/06/10 职场文书
入党政审材料范文
2014/12/24 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
Pygame Event事件模块的详细示例
2021/11/17 Python
日元符号 ¥
2022/02/17 杂记
配置nginx负载均衡
2022/05/06 Servers