You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:50:21