PHP给出了比ruby不同的哈希计算,我该如何修复?

时间:2009-12-10 16:57:26

标签: 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), HashString)
return Base64.encode64(digest.to_s()).chomp()

这可能是一个字符集问题吗?我找到了这个: C# SHA-1 vs. PHP SHA-1...Different Results?

如果是这样,我该如何解决?注意我必须使PHP匹配Rubys结果,反过来在这种情况下无济于事。

1 个答案:

答案 0 :(得分:1)

在Ruby版本中,您有一个base64编码的密钥;在PHP中,您直接使用$key作为二进制密钥。这可能是问题吗?

(至于charsets,嗯,你有非ASCII吗?典型的$hash_string是什么?)