PHP代码:
function compute_signature($key, $hash_string)
{
$digest = hash_hmac("sha1", $hash_string, $key, true);
return base64_encode($digest);
}
Ruby代码:
digest = HMAC.digest(Digest.new(SHA1), Base64.decode64(key), HashString)
return Base64.encode64(digest.to_s()).chomp()
这可能是一个字符集问题吗?我找到了这个: C# SHA-1 vs. PHP SHA-1...Different Results?
如果是这样,我该如何解决?注意我必须使PHP匹配Rubys结果,反过来在这种情况下无济于事。
答案 0 :(得分:1)
在Ruby版本中,您有一个base64编码的密钥;在PHP中,您直接使用$key
作为二进制密钥。这可能是问题吗?
(至于charsets,嗯,你有非ASCII吗?典型的$hash_string
是什么?)