PHP与ruby提供不同的哈希计算,如何修复?
PHP代码:PHP与ruby提供不同的哈希计算,如何修复?,php,ruby,Php,Ruby,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), HashStr
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()
这可能是字符集问题吗?我发现:
如果是这样的话,我该怎么解决?请注意,我必须使PHP与Rubys结果匹配,在这种情况下,反之亦然。在Ruby版本中,您有一个base64编码的密钥;在PHP中,您直接使用
$key
作为二进制键。这可能是问题所在吗
(至于字符集,那么,您是否有任何非ASCII码?典型的
$hash\u字符串是什么?)在Ruby版本中,您有一个base64编码的密钥;在PHP中,您直接使用$key
作为二进制键。这可能是问题所在吗
(至于字符集,那么,你有没有任何非ASCII码在里面?典型的$hash_string
是什么?)应该在$key上澄清,当我在php端传递它时,它已经被base64解码了。典型的哈希字符串是字母数字。(网络请求标题)嗯,你会认为那会起作用。。。除非它包含不匹配的换行符,也许?一个示例值/哈希值如何?至少能让我们知道是PHP还是Ruby版本“错了”…我应该在$key上澄清一下,当我在PHP端传递它时,它已经被base64解码了。典型的哈希字符串是字母数字。(网络请求标题)嗯,你会认为那会起作用。。。除非它包含不匹配的换行符,也许?一个示例值/哈希值如何?至少能让我们知道是PHP还是Ruby版本“错了”。。。