Javascript crypto js中的AES解密返回空字符串

Javascript crypto js中的AES解密返回空字符串,javascript,encryption,cryptojs,Javascript,Encryption,Cryptojs,我试图将加密数据存储在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

我试图将加密数据存储在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、填充、密钥大小和模式,但在这种情况下,每次运行加密时都会得到不同的字符串。我需要加密以始终返回相同的结果


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

请看这里:另外,在发送之前转换输出base64,在解密之前转换回base64。由于IV是公共的,所以不要使用IV=key。对不起,仍然没有成功,您介意帮我介绍一下我的示例吗?我对加密/解密非常陌生?AES应用大小为16、24和32字节的密钥。IV必须为16字节大。如果仍然不起作用,测试后的数据包括明文、密钥、IV和密文。顺便说一句,如果要使用内置的密钥派生函数,则必须传递一个字符串,而不是
WordArray
,然后将其解释为从中派生实际密钥的密码短语,请参阅。但是,使用的密钥派生函数是专有的,而且相对较弱(OpenSSL的
EVP_BytesToKey
),因此我不鼓励使用它。