当前位置: 首页 > 知识库问答 >
问题:

与BouncyCastle的PaddedBufferedBlockCipher具有AESEngine和PKCS7填充的等效密码是什么?

居星阑
2023-03-14

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

我应该使用哪种算法?

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

-bash-4.1$openssl列表-cipher-algorithmsgrep 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

共有1个答案

裴焱
2023-03-14

如果使用分组密码加密某物,则需要

  • 分组密码,它可以接受单个输入块并将其分解为单个输出块(对于AES来说,块大小为16字节),
  • 使您能够以结构化方式加密多个块的操作模式
  • 填充,使您能够加密长度不是块大小的倍数的内容。

您所显示的PaddedBufferedBlockCipher中只有两个。操作模式被暗示为ECB模式,因为它简单地包括将分组密码分别应用于每个块。

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

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

xxx交换密钥的大小(以位为单位)。有效大小为128位、192位和256位。其他的都不行。此外,请确保您的密钥编码正确。

如果您想知道为什么这里使用createdecipherIV而不是createdecipher,我建议您仔细地将文档与这两个函数进行比较。createdecipher需要密码而不是密钥。

其他考虑:

切勿使用ECB模式。它是确定性的,因此在语义上不安全。您至少应该使用随机模式,如CBC或CTR。最好对密文进行身份验证,这样就不可能发生类似填充oracle攻击的攻击。这可以通过验证模式(如GCM或EAX)或加密MAC方案来实现。

 类似资料:
  • 我目前使用< code > AES/CBC/PKCS 5 Padding 对Java文件进行加密,密钥大小为256字节,但在搜索时,我在stack exchange PKCS # 5-PKCS # 7 Padding上发现了它, PKCS#5填充是8字节块大小的PKCS#7填充的子集 所以我想知道 > < li >对于上述配置,< code > AES/CBC/pkcs 7 padding 的性能

  • 我正在尝试解码服务器返回的php数据:我知道数据AES 256已解码,并且有PKCS7填充,但无法确定它使用的是哪种块模式 这是我的php函数: 和编码数据的示例 当我用ECB (MCRYPT_MODE_ECB)解码时,它只解码数据的开始部分,其余部分不可读 当用CBC(MCRYPT_MODE_CBC)模式解码时,它的开头不可读 结果应该是(我在客观-c中使用通用密码器在Mac上得到的): 有人知

  • 如果公司营业额大于50亿卢比,GST理事会已批准将企业对企业(B2B)发票的“电子发票”或“电子发票”实施到GST系统。参考商品及服务税门户 API :einv-apisandbox.nic.in/index.html 我必须使用APP密钥对加密的SEK进行解密,并使用解密的SEK对json数据进行编码,以便发布Einvoice Generation,我找到了java和C#的示例代码,我已经用PH

  • 每个人都在谈论密码中的填充方案,但需要传递给密码的实际字符串是什么?我不在乎它们是对称的还是不对称的,我只想要一个可能值的列表。

  • 我需要用Java解密(打开)那个数据。 我找到了一篇对此进行解释的文章(http://blog.local.ch/en/2007/10/29/openssl-php-to-java/),但这篇文章并不涉及解密数据所需的密钥受密码短语保护的情况。 我应该如何修改文章中提到的解决方案以使用密码短语保护的密钥? 谢谢!

  • 要求: 我有一个Ruby on rails应用程序,我需要执行以下操作。 以下字符串应使用3DES算法和工作密钥加密。ABJGTU9的加密值将是vV51P0OGXt0= 工作密钥为 A5157A0D77B24AEA868AD73288366826 以下文献中提到的3DES算法使用以下步骤进行数据加密: i.使用CBC密码模式和PKCS7填充的密钥的左侧部分加密数据。ii.使用CBC密码模式和无填充