我从以下C#
加密代码开始,并希望用Ruby
解密。我的问题是我不知道如何在Ruby/OpenSSL
中设置填充模式。我特别需要使用PKCS7
。
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
,但可以使用任何必要的版本。
构造函数参数实际读取<name>-<key length>-<mode>
,因此首先,您可能要使用AES-256-CBC
来使用256位键。[来源]
AES块大小无论如何都固定为128位,因此您无需调整此参数。[来源]
另外,Ruby默认情况下使用PKCS7填充,因此也无需调整此填充。[来源]
因此,您应该只使用
就应该很好c = OpenSSL::Cipher.new('AES-256-CBC')
c.decrypt
c.key = key
c.iv = iv