繁体   English   中英

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

[英]How to set Padding Mode with Ruby/OpenSSL decryption / encryption?

我从以下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 Block size 是固定为 128 Bit 的,所以不需要调整这个参数。 [资源]

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

因此,你应该只

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM