3
我從以下C#
加密碼開始,並且想用Ruby
解密。我的問題是我不知道如何在Ruby/OpenSSL
中設置填充模式。我特別需要使用PKCS7
。如何使用Ruby/OpenSSL解密/加密設置填充模式?
C#加密
System.Security.Cryptography.Aes c = new System.Security.Cryptography.AesManaged();
c.Mode = CipherMode.CBC;
c.Padding = PaddingMode.PKCS7; # <-- how to set this in Ruby world?
c.KeySize = 256;
c.BlockSize = 128;
c.Key = key;
c.IV = iv;
...
紅寶石解密
d = OpenSSL::Cipher.new('AES-128-CBC') # oops, this should have been AES-256-CBC
d.decrypt
d.key = key
d.iv = iv
...
我目前使用的
Ruby 1.9.2
,但可以使用任何必要的版本
。
你的答案感謝。我已經按照你的建議更改了密碼,並且解密*似乎已經成功了,儘管我實際上還沒有證實,因爲我現在正在對解密數據進行膨脹問題(可能是'C#'和'Ruby'之間的問題re:'Zlib'放氣和充氣)。無論如何,關於Ruby的默認填充,我發現[一個SO回答說PKCS5是默認的](http://stackoverflow.com/a/12611287/664833)。 [文檔](http://www.ruby-doc.org/stdlib-1.9.2/libdoc/openssl/rdoc/OpenSSL/Cipher.html)對此詳細信息(或者至少我沒有找到它)。 – user664833
Wiki上關於填充的文章說:「PKCS5填充與PKCS7相同,只是技術上它只能用於填充64位塊,實際上兩者可以互換使用。」 (http://en.wikipedia.org/wiki/Padding_(cryptography))所以AES根據定義不能使用PKCS5填充,因爲塊大小固定爲128(> 64) –
對於某些人(如我)如果這個答案更新,包括如何指定填充和其他參數在紅寶石。謝謝您的回答 –