我正在将一些现有代码从 Python 重写为 Ruby,并且遇到了一个我似乎无法弄清楚的奇怪错误。这里我们有 Python 代码(有效):
import sha, hmac
data = 'sampledata'
data = data.encode('ascii')
des_key = hmac.new(data + "\0", "SUPERSECRET", sha).digest()[0:8]
输出:0x64F461D377D9930C
Ruby(我是新手)代码:
require 'openssl'
digest = OpenSSL::Digest::SHA.new
data = 'sampledata'
data.encode!('ascii')
puts OpenSSL::HMAC.hexdigest(digest, "SUPERSECRET", data + "\0")[0, 16]
输出:0x563FDAF11E63277C
什么可能导致这种差异?