javascript - crypto-js 中的 AES 解密返回空字符串
问题描述
我正在尝试将加密数据存储在 localStorage 中,并在需要时使用 crypto-js 对其进行解密这是加密功能:
const passphrase = CryptoJS.enc.Utf8.parse('key');
const iv = CryptoJS.enc.Utf8.parse('key');
return CryptoJS.AES.encrypt(string, passphrase, { mode: CryptoJS.mode.CBC, iv: iv, padding: CryptoJS.pad.Pkcs7}).toString();
解密函数为:
const passphrase = CryptoJS.enc.Utf8.parse('key');
const iv = CryptoJS.enc.Utf8.parse('key');
return CryptoJS.AES.decrypt(string, passphrase, { mode: CryptoJS.mode.CBC, iv: iv, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)
但是解密时我得到一个空字符串。我尝试过更改 iv、填充、密钥大小和模式,但在这种情况下每次运行加密时都会得到不同的字符串。我需要加密才能始终返回相同的结果
有人可以告诉我我做错了什么吗?
解决方案
推荐阅读
- python - 表单中的 Django JSON 字段
- git - 在 Docker 构建期间使用 git 子模块
- memory-management - 使用 procdump 进行转储时,进程的内存使用量会增加。这甚至可能吗?
- java - 掷骰子的 Java 方法每次都返回“双倍”
- html - 将样式应用于放置在另一个表中的特定子表
- python - 如果输入的重量不在列表中,我如何使它不出现错误(索引错误)
- c++ - 通过指针或引用将映射传递给函数?
- java - 是否有可用于在 Javadoc 中嵌入 Graphviz DOT 代码的 doclet?
- javascript - 检查对提示的响应是否为某个字符串
- sql - 如何制作案例陈述并忽略用户的输入 postgres