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 相关文章推荐
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
Aug 09 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
Apr 19 Javascript
JS实现简单的图书馆享元模式实例
Jun 30 Javascript
Select下拉框模糊查询功能实现代码
Jul 22 Javascript
微信JS接口大全
Aug 25 Javascript
requirejs + vue 项目搭建详解
Jun 16 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
Nov 05 Javascript
小程序实现图片预览裁剪插件
Nov 22 Javascript
JS实现打字游戏
Dec 17 Javascript
JavaScript运动原理基础知识详解
Apr 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
用PHP编写PDF文档生成器
2006/10/09 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
jQuery实现动画效果的实例代码
2013/05/07 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
JS运动改变单物体透明度的方法分析
2018/01/23 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
Django框架模板介绍
2019/01/15 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python 在局部变量域中执行代码
2020/08/07 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
大三预备党员入党思想汇报
2014/01/08 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
美术毕业生求职信
2014/02/25 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
师德师风自查总结
2014/10/14 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python