【发布时间】:2019-07-16 15:34:04
【问题描述】:
我需要在 CBC 模式下使用双长度 Triple-DES (TDEA) 对称密钥加密数据。我正在使用 Ruby OpenSSl::Cipher。但与 BP 工具密码计算器和 EMV DES 计算器相比,它给出了不同的结果。以下是我的代码
任何机构可以帮助我为什么我的结果不同?我也有检查在线工具来验证我的结果。
它给出的结果与 BP-tool 相同。
flavour = 'des-ede3-cbc'
# key and input text are in hexadecimal
key = "2315208C9110AD402315208C9110AD40"
iv = "0000000000000000"
input_text = "2020205a4f534135366461746574696d653d32303138313032343130303332333b6578706972793d313232323b70616e3d343233363031373839303132333435362121212121212121"
begin
c = OpenSSL::Cipher.new flavour
c.encrypt
c.key = key
c.iv = iv
str = input_text
enc = c.update(str) + c.final
puts "#{flavour} gives us #{enc.unpack('H*').first.upcase}"
rescue => e
puts "#{flavour} didn't work because #{e.message}"
end
Result:
8AF0D655A844EC016E171F1892188DD5C77E6F76D79A4582313D2415D9AD6944E16C7CA680CCD0C251BA8921E7C35153F345126A89ECCD68E4B0485FFDCDA778DBBE32B38451A59AFA443A96C46E30BD7CE983078EA40F8F0196C607FF537E5A36B910A40C3B0DB8C42BD2AB135928B0BDDF6DC85CF516EACCD14E0C21B93CE428A9E4F78A13AE9834966B41C4C1835B1910BE5716D117F7
The expected result should be:
4A9E9B245BBDC16D76998143CB6FC1C2B8780539C1C9A100AEC3D745B8BF00DF43A4B51A29A6205845E510E18E26AB940152F90F12E86543A9E5239B30DFDBCD8D3FCDB65F603979
【问题讨论】:
-
c.key = key返回ArgumentError: key must be 24 bytes。请提供一个有效的例子。