4

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

4

1 回答 1

3

构造函数参数实际上是<name>-<key length>-<mode>,所以首先,您可能想要AES-256-CBC使用 256 位密钥。[资源]

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

此外,Ruby 似乎默认使用 PKCS7 Padding,因此也无需对此进行调整。[资源]

因此,你应该很好地去

c = OpenSSL::Cipher.new('AES-256-CBC')
c.decrypt
c.key = key
c.iv = iv
于 2012-11-06T14:56:18.850 回答