gpt4 book ai didi

node.js - 带有 AESEngine 和 PKCS7 填充的 bouncycaSTLe 的 PlatedBufferedBlockCipher 的等效密码是什么?

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

我想使用nodejs解密AES-256加密的字符串。我正在使用加密模块。

该字符串使用 Bouncy caSTLe java 库加密。在 Java 中,密码的初始化使用:

PlatedBufferedBlockCipher 密码 = new PlatedBufferedBlockCipher(new AESEngine(), new PKCS7Padding());

crypto Nodejs 的模块使用 openssl 的密码列表来初始化它,例如:

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

我应该使用哪种算法?

以下是可供选择的算法列表:

-bash-4.1$ openssl 列表密码算法|grep AES-256
AES-256-CBC
AES-256-CFB
AES-256-CFB1
AES-256-CFB8
AES-256-CTR
AES-256-ECB
AES-256-OFB
AES-256-XTS
AES256 => AES-256-CBC
aes256 => AES-256-CBC

最佳答案

如果您使用分组密码加密某些内容,则需要

  • 分组密码,可以采用单个输入 block 并将其分解为单个输出 block (对于 AES, block 大小为 16 字节),
  • 一种操作模式,使您能够以结构化方式加密多个 block
  • 填充使您能够加密不完全是 block 大小的倍数的内容。

您显示的 PlatedBufferedBlockCipher 只有其中两个。操作模式隐含为 ECB 模式,因为它只是将分组密码分别应用于每个分组。

您将在 node.js 中获得相同的行为:

var decipher = crypto.createDecipheriv('aes-xxx-ecb', key, '');

xxx 替换为您的 key 大小(以位为单位)。有效大小为 128 位、192 位和 256 位。其他一切都行不通。另外,请确保您的 key 编码正确。

如果您想知道为什么此处使用 createDecipheriv 而不是 createDecipher,我建议您仔细将文档与这两个函数进行比较。 createDecipher 需要密码而不是 key 。

<小时/>

其他注意事项:

切勿使用ECB mode 。它是确定性的,因此在语义上不安全。您至少应该使用随机模式,例如 CBCCTR 。最好对您的密文进行身份验证,以便像padding oracle attack这样的攻击是不可能的。这可以通过 GCM 或 EAX 等身份验证模式或使用 encrypt-then-MAC 来完成。方案。

关于node.js - 带有 AESEngine 和 PKCS7 填充的 bouncycaSTLe 的 PlatedBufferedBlockCipher 的等效密码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42506429/

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