如何使用Ruby / OpenSSL解密/加密设置填充模式?

时间:2012-11-05 22:33:02

标签: c# ruby openssl padding ruby-1.9.2

我从以下C#加密代码开始,并希望使用Ruby进行解密。我的问题是我不知道如何在Ruby/OpenSSL中设置填充模式。我特别需要使用PKCS7

C#encryption

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;
...

Ruby解密

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,但可以使用任何必要的版本。

1 个答案:

答案 0 :(得分:3)

构造函数参数实际上读取<name>-<key length>-<mode>,因此首先,您可能希望使用AES-256-CBC以使用256位密钥。 [source]

无论如何,AES块大小固定为128位,因此您无需调整此参数。 [source]

此外,Ruby似乎默认使用PKCS7 Padding,所以也不需要调整它。 [source]

因此,你应该选择

c = OpenSSL::Cipher.new('AES-256-CBC')
c.key = key
c.iv = iv