gpt4 book ai didi

node.js - PyCrypto 和 Node.JS Crypto 库中的 AES 是否相同

转载 作者:搜寻专家 更新时间:2023-11-01 00:03:26 24 4
gpt4 key购买 nike

我开始怀疑 AES 的实现是否因图书馆而异..

目前我有一个用 PyCrypto 加密的明文。
我正在尝试使用 Node.js 的加密库解密密文..

基本上使用 PyCrypto..
我使用 AES-128-CBC 和随机生成的 IV。 (在 PyCrypto 中完美解密)

然而..
我在 Node.js 上这样做

var buf = new Buffer(ciphertext)
var decipher = crypto.createDecipher('aes-128-cbc',aeskey)
buf = decipher.update(buf,'binary', 'binary')
buf += decipher.final('binary')

吐出一堆垃圾....(将“二进制”更改为十六进制/utf8 没有帮助)

因为我正在使用 CBC(密码 block 链接)...
我将 IV 添加到密文的开头(16 个 block )..在 PyCrypto 中,这完美地工作,类似于 PGP 的规范,CFB 的使用..

有谁知道这不起作用的原因是什么???

我是否对 Node.js 的标准库期望过高?

最佳答案

文档没有提到这一点,但是您传递给 crypto.createDecipheraeskey 不是 key ,而是一个密码,已处理到 OpenSSL 的 EVP_BytesToKey功能。

要传递实际的原始 key 数据,应该使用(目前未记录)crypto.createDecipheriv(cipher, key, iv) 函数。这也适用于 ECB 模式,即使 ECB 中没有 IV。

如果失败,我认为调试的第一步是尝试使用 AES KATs查看解密代码是否正确。

我在这里遇到了类似的问题:https://github.com/joyent/node/issues/1318

关于node.js - PyCrypto 和 Node.JS Crypto 库中的 AES 是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345719/

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