PHP与ruby提供不同的哈希计算,如何修复?

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

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()
这可能是字符集问题吗?我发现:


如果是这样的话,我该怎么解决?请注意,我必须使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版本“错了”。。。