使用 CryptoJS 使用加密的盐字符串和密码短语解密消息

Decrypt message with encrypted salt string and secret passphrase using CryptoJS

我想使用 cryptoJS 解码加密的字符串。我知道如何解码加密对象,但无法理解如何解密字符串。

这是我尝试过的:

var enc = CryptoJS.AES.encrypt('hellloooo', 'secretpassphrase');
console.log('encrypted', enc.salt.toString());
console.log('decrypted', CryptoJS.AES.decrypt(CryptoJS.enc.salt.parse(enc.salt.toString()), 'secretpassphrase').toString(CryptoJS.enc.Utf8));

salt 是在加密过程中随机生成的一些随机值,以便从给定的密码中派生出实际的密钥和 IV。它没有秘密,所以试图解密它不会给你任何有用的东西。

这里有两种解密密文的方法

CryptoJS.AES.decrypt(enc, 'secretpassphrase').toString(CryptoJS.enc.Utf8);
CryptoJS.AES.decrypt(enc.toString(), 'secretpassphrase').toString(CryptoJS.enc.Utf8);

盐仍然存在于 enc 对象中,因此 decrypt() 函数可以使用它来重新创建密钥和 IV 来解密字符串。