我从下面的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;
...
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
,但可以使用任何需要的版本。
最佳答案
构造函数参数实际上是<name>-<key length>-<mode>
,所以首先,您可能想使用 AES-256-CBC
为了使用 256 位 key 。 [source]
AES Block size 无论如何都是固定为 128 Bit,所以你不需要调整这个参数。 [source]
另外,Ruby 似乎默认使用 PKCS7 Padding,因此也无需调整。 [source]
因此,你应该只用
c = OpenSSL::Cipher.new('AES-256-CBC')
c.decrypt
c.key = key
c.iv = iv
关于c# - 如何使用 Ruby/OpenSSL 解密/加密设置填充模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241489/