既存のコードを 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
この違いの原因は何ですか?