【问题标题】:How can I decrypt data encrypted with 'rijndael-128-cbc' in ruby如何解密在 ruby​​ 中使用“rijndael-128-cbc”加密的数据
【发布时间】:2014-12-07 14:29:20
【问题描述】:

我需要用 'rijndael-128-cbc' 算法解密由 php 加密的数据。

现在我在将 php 代码转换为 ruby​​ 代码时遇到了问题。 ruby OpenSSL::Cipher 不支持 rijndael-128-cbc 然后我使用“aes-128-cbc”。 我听说 AES 是基于 Rijndael 密码的,所以我想我可以将 rijndael-128-cbc' 的解密转换为 AES-128-CBC。

enc = OpenSSL::Cipher.new "AES-128-CBC"
enc.encrypt
puts enc.key_len

它的输出是 16

然而,在 php 中

echo mcrypt_get_key_size('rijndael-128', 'cbc')

这得到 32

“rijndael-128”和“AES-128-CBC”有什么区别吗?

以及如何将 rijndael-128-cbc 描述转换为 ruby​​?

【问题讨论】:

    标签: php ruby encryption


    【解决方案1】:

    我不是 Ruby 开发人员,所以无法帮助您编写 ruby​​ 代码,但我可以为您提供一些关于 Rijndael 和 PHP 的 mcrypt 扩展的建议...

    是的,AES 基于 Rijndael-128,因此 Rijndael-128 和 AES-128 是一回事。

    需要注意的是,Rijndael 变体中的数字是指密码的块大小,而对于 AES - 它是 密钥大小,因此(例如)Rijndael- 192 不是 AES-192; AES 的块大小始终为 16 字节或 128 位。

    话虽如此,Rijndael-128 也可以是 AES-192 和 AES-256,区别仅在于密钥大小。

    mcrypt_get_key_size() 的 PHP 手册中所述,该函数返回所提供密码的 最大 密钥长度 ...

    AES-256 == Rijndael-128 with a 32-byte key
    

    这就是它返回 32 的原因。对于 AES-128,密钥大小当然是 16 - 您可以对其进行硬编码。

    希望这会为您澄清一点。

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2020-11-29
      相关资源
      最近更新 更多