当前位置: 首页 > news >正文

crpto 的AES算法解密为空

1. 需求

对用户密码加密存入数据库,修改密码时取出密码在前端解密(保证密码前后端传输过程中为密文)。

文档地址:CryptoJS - CryptoJS (gitbook.io)

2. 原代码

2.1 加密

var userpass = "123456";
var aseKey = "12345678";
var encrypt = CryptoJS.AES.encrypt(userpass, CryptoJS.enc.Utf8.parse(aseKey), {mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7
}).toString();
console.log(encrypt);

2.2 解密

var encrypt = "密文密码";
var aseKey = "12345678";
var decrypt = CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), {mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
console.log(decrypt)

3 问题

上述代码加密环节没有问题,但是从数据库取出后的密文进行解密内容为空。

4 解决方案

添加偏移量:iv: CryptoJS.enc.Utf8.parse(aseKey)

4.1 加密

var userpass = "123456";
var aseKey = "12345678";
var encrypt = CryptoJS.AES.encrypt(userpass, CryptoJS.enc.Utf8.parse(aseKey), {// 添加偏移量iv: CryptoJS.enc.Utf8.parse(aseKey),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7
}).toString();
console.log(encrypt);

4.2 解密

var encrypt = "密文密码";
var aseKey = "12345678";
var decrypt = CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), {// 添加偏移量iv: CryptoJS.enc.Utf8.parse(aseKey),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
console.log(decrypt)

5. 参考资料

[1] 不要再问我加密的问题了,使用crypto-js中的AES加密方法,连续多次加密/解密,注意事项

[2] CryptoJS aes加密(不要求密钥长度),解密为空字符串的问题

http://www.lryc.cn/news/308945.html

相关文章:

  • 13.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-如果没有工具就创造工具
  • 配置artifactory的反向代理和域名访问
  • python爬虫之协程知识点记录
  • 安卓开发1- android stdio环境搭建
  • qt QRadioButton 及QButtonGroup 使用
  • 【LeetCode-178】最长重复子串(动归)
  • 1、jQuery介绍、css()、选择器、事件、动画
  • ArcEngine 调用GP工具时,出现C++ R6034错误
  • windows下基于docker-desktop 安装 mysql 5.7
  • 什么是Rust 语言
  • 2024年四川媒体新闻发布渠道,媒体邀约资源表
  • 14:00面试,14:07就出来了,问的问题过于变态了。。。
  • 利用 Python 抓取数据探索汽车市场趋势
  • 新闻网站封锁AI爬虫 AI与新闻媒体博弈继续
  • Python Web开发记录 Day5:jQuery(JavaScript库)
  • 前端-Vue3递归组件自定义Tree
  • 《TCP/IP详解 卷一》第12章 TCP初步介绍
  • 作业1-224——P1015 [NOIP1999 普及组] 回文数
  • 后端知识(理解背诵)
  • 构造pop链
  • JAVA设计模式——创建型模式
  • 队列的结构概念和实现
  • Linux系统上使用C语言创建线程
  • pc端如何做自适应呢?
  • c语言经典测试题8
  • 解决GitHub无法访问的问题:手动修改hosts文件与使用SwitchHosts工具
  • ETL数据仓库的使用方式
  • POST参数里加号+变成空格的问题处理
  • 【华为面试基础题】检查是否存在满足条件的数字组合
  • 亚信安慧AntDB数据并行加载工具的实现(一)