首页 > 解决方案 > 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、填充、密钥大小和模式,但在这种情况下每次运行加密时都会得到不同的字符串。我需要加密才能始终返回相同的结果

有人可以告诉我我做错了什么吗?

标签: javascriptencryptioncryptojs

解决方案


推荐阅读