2014-10-13 33 views
1

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

现在我有一个问题,将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 descrytion转换为ruby?

回答

4

我不是Ruby开发者,所以我不能帮你的Ruby代码,但我可以给你的Rijndael,和PHP的mcrypt扩展一些指点...

是的,AES是基于Rijndael-128,因此Rijndael-128和AES-128是同样的东西。

要注意,在Rijndael算法的变型的数目指的是加密的块大小,而对于AES是非常重要的 - 它是密钥大小,所以(例如)的Rijndael-192是NOT AES-192; AES始终具有16个字节或128个位的块大小。也就是说,Rijndael-128也可以是AES-192和AES-256,区别仅在于密钥大小。

如在PHP手册mcrypt_get_key_size()描述的,函数返回供给加密的最大密钥长度...

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

这就是为什么它的返回32. AES-128,关键大小当然是16 - 你可以硬编码。

希望这可以帮你清理一下。

+0

非常感谢!这对我很有帮助! –

相关问题