Ruby中OpenSSL DES-CBC加密结果不符问题排查
问题:Ruby中用OpenSSL复现DES-CBC加密结果不符
我尝试用Ruby的OpenSSL库复现DES-CBC加密结果,关键参数如下:
- 原始字符串:
NZVVOLV2016AENS - 字符串转十六进制:
4e5a56564f4c563230313641454e53 - IV:
18074F7ADD44C903 - 密钥:
18074F7ADD44C903 - 预期加密结果:
9B699B4C59F1444E8D37806FA9D15F81
我的Ruby代码如下:
require 'openssl' require "base64" include Base64 iv = "08074F7ADD44C903" cipher = "08074F7ADD44C903" def encode(string) puts "Attempting encryption - Input: #{string}" encrypt = OpenSSL::Cipher.new('DES-CBC') encrypt.encrypt encrypt.key = ["18074F7ADD44C903"].pack('H*') #.scan(/../).map{|b|b.hex}.pack('c*') encrypt.iv = ["18074F7ADD44C903"].pack('H*') result = encrypt.update(string) + encrypt.final puts "Raw output: #{result.inspect}" unpacked = result.unpack('H*')[0] puts "Encrypted key is: #{unpacked}" puts "Encrypted Should be: 9B699B4C59F1444E8D37806FA9D15F81" return unpacked end res = encode("NZVVOLV2016AENS")
代码运行输出:
Encrypted key is: 9b699b4c59f1444ea723ab91e89c023a Encrypted Should be: 9B699B4C59F1444E8D37806FA9D15F81
奇怪的是,加密结果的前半部分和预期一致,但后半16位完全错误。
内容的提问来源于stack exchange,提问作者Jeremy Lynch
相关产品推荐
相关产品推荐

