Php 如何解密使用';rijndael-128-cbc';红宝石色

Php 如何解密使用';rijndael-128-cbc';红宝石色,php,ruby,encryption,Php,Ruby,Encryption,我需要用“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.k

我需要用“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?

我不是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\u get\u key\u size()
的PHP手册所述,该函数返回所提供密码的最大密钥长度

AES-256 == Rijndael-128 with a 32-byte key
这就是它返回32的原因。对于AES-128,密钥大小当然是16-您可以硬编码

希望这能帮你澄清一点