ruby - 如何在 Ruby 中以十六进制执行三重 DES 计算?

标签 ruby encryption openssl 3des

我正尝试在 Ruby 中进行一些三重 DES 加密。我正在尝试复制此页面的结果:http://da.nmilne.com/des.html

我正在尝试在 Ruby 中复制这些结果。我怀疑问题是 key 应该是一个字符串,但我需要传入一个十六进制 key 。那个或被加密的字符串格式错误。或者两者兼而有之。 :-)

require 'openssl'
des = OpenSSL::Cipher::Cipher.new("des-ede-cbc")
des.encrypt
des.key="23232323232323234545454545454545"
des.update("0000000000000000")
res=des.final
res.unpack('H*')  
=> ["5045c5d37ca4d13b"]

但应该是:

=> ["3a42d7a1d1c60c40"]

关于我哪里出错的任何指示?

最佳答案

key 是十六进制的 - 如果您查看粘贴的 Java 页面,您可以通过解码详细输出中 key 的二进制值轻松看到这一点。

>> des_cbc=OpenSSL::Cipher::Cipher.new("des-ede-cbc")
=> #<OpenSSL::Cipher::Cipher:0x10116ce28>
>> des_cbc.encrypt
=> #<OpenSSL::Cipher::Cipher:0x10116ce28>
>> des_cbc.key="\x23"*8 << "\x45"*8
=> "########EEEEEEEE"
>> des_cbc.update("\x00"*8).unpack('H*')
=> ["3a42d7a1d1c60c40"]

关于ruby - 如何在 Ruby 中以十六进制执行三重 DES 计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3149288/

相关文章:

ruby - 如果文件名在 Windows 上具有 unicode 字符,Ruby 1.9.1 能否最终获得文件名列表?

algorithm - 棘手的加密算法设计

json - 尝试使用 crypto-js 和 nodejs 解密

linux - 如何从 Windows 创建 PEM 文件

c - 如何使用 openssl C API 验证 pkcs#12 证书 (.PXF) 的密码?

ruby-on-rails - rails : best practice to count key values in hash

ruby-on-rails - 为什么 rails 在 insert 语句中手动指定主键 id?

c++ - boost asio ssl async_write 向我发送 moSTLy 乱码

ruby-on-rails - 如何在 Rails 日志中包含设计用户名(使用 graylog2)

c++ - 关于我应该使用的加密方法的建议