PHP giving different hash calculation than ruby, how can I fix?
PHP code:
function compute_signature($key, $hash_string)
{
$digest = hash_hmac("sha1", $hash_string, $key, true);
return base64_encode($digest);
}
Ruby Code:
开发者_运维百科 digest = HMAC.digest(Digest.new(SHA1), Base64.decode64(key), HashString)
return Base64.encode64(digest.to_s()).chomp()
Could this be a charset issue? I found this: C# SHA-1 vs. PHP SHA-1...Different Results?
If so how could I fix? Note I must make PHP match Rubys results, the reverse would not help in this situation.
In the Ruby version you have a base64-encoded key; in PHP you are using the $key
directly as a binary key. Could that be the issue?
(As for charsets, well, do you have any non-ASCII in there? What's a typical $hash_string
?)
精彩评论