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 相关文章推荐
验证用户是否修改过页面的数据的实现方法
Sep 26 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
js实现的map方法示例代码
Jan 13 Javascript
基于Jquery代码实现手风琴菜单
Nov 19 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
js字符串引用的两种方式(必看)
Sep 18 Javascript
JavaScript与java语言有什么不同
Sep 22 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
在Vue.js中使用Mixins的方法
Sep 12 Javascript
原生JS实现的雪花飘落动画效果
May 03 Javascript
JS数组去重常用方法实例小结【4种方法】
May 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中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
php pdo操作数据库示例
2017/03/10 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
简单JS代码压缩器
2006/10/12 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
jstree的简单实例
2016/12/01 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
使用python加密自己的密码
2015/08/04 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
python3多线程知识点总结
2019/09/26 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
闭幕式主持词
2014/04/02 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
复活读书笔记
2015/06/29 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书