gpt4 book ai didi

node.js - Nodejs createDecipher,可以用两个不同的 key 解密相同的密文

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:17 25 4
gpt4 key购买 nike

在使用 Nodejs createDecipher 时,我似乎能够使用两个不同的 key 解密相同的密文数据负载,而不会出现错误。

var ciphertext = '31c655f86b39fc9ac1dd96d7ae5e9d905e7c977df9ea70e6b87d3504caf03760';

var key1 = 'asdf';
var key2 = '8bc94f258d9aaf509061b5ff52bfeb019ce802959c41eaa188beacd5e33f21db';

function decrypt(data, key) {
var decipher = crypto.createDecipher('aes-256-cbc', key);

var decrypted = decipher.update(data, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}

// 890736.159999999
console.log(decrypt(ciphertext, key1));
// ������F������쭳����M2�����C�<
console.log(decrypt(ciphertext, key2));

当使用第二个 key 解密时,我预计会产生 EVP_DecryptFinal_ex:badcrypt 错误。事实上,当我更改第二个键中的单个字符时,会产生错误:

crypto.js:153
var ret = this._handle.final();
^

Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
at Error (native)
at Decipher.Cipher.final (crypto.js:153:26)
at decrypt (/Users/user/decrypt.js:8:27)
at Object.<anonymous> (/Users/user/decrypt.js:13:13)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:148:18)

使用第二个 key :8bc94f258d9aaf509061b5ff52bfeb019ce802959c41eaa188beacd5e33f21dd

虽然没有抛出错误,但第二个 key 生成的解密值不正确,应为 890736.159999999。

我尝试在 Mac 上使用 Node 6.10.3、4.4.6 和 5.10。我还尝试在运行 amazon linux 的 docker 容器中使用 Node 6.10.3。

根据docs : crypto.createDecipher() 的实现使用 OpenSSL 函数 EVP_BytesToKey 派生 key ,摘要算法设置为 MD5,一次迭代,无盐。 我可能会看到 md5 冲突吗?

最佳答案

由于第二个解密数据不正确,因此它正确解密。

明文为16字节将添加 16 字节的填充,从而添加 32 字节的加密数据加密数据为 64 个十六进制字符或 32 个字节。

所以这一切都是有道理的。

现在对于错误,我怀疑您收到错误 key 的填充错误,即填充不一致。请参阅PKCS#7 padding .

填充错误不是对正确加密 key 的有效检查。如果您需要检查加密是否成功,则需要添加身份验证。

关于node.js - Nodejs createDecipher,可以用两个不同的 key 解密相同的密文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44690010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com