2014-10-13 58 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

非常感謝!這對我很有幫助! –

相關問題