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

标签 c# ruby openssl padding ruby-1.9.2

我从下面的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/

相关文章:

ruby-on-rails - 更新 gemspec 文件列表的最佳实践是什么?

windows - 如何通过 Windows 上的命令行检查 https 页面上的字符串是否可用?

windows - 无法在 Windows 上从/usr/local/ssl/openssl.cnf 加载配置信息

c# - .NET Core 中的用户配置设置

c# - ASP.NET 在 OnPreInit 之前处理按钮单击事件

ruby-on-rails - 如何从电脑、heroku、github上彻底删除ruby on rails项目

c - 使用本地编译的 OpenSSL 加载 ibcrypto.so.3 失败

c# - 委托(delegate)作为 C# 类构造函数中的参数

c# - 如何在 quartz.net 调度器中使用依赖注入(inject)

用于发表评论的 Ruby 脚本