0

我需要验证来自 ankoder.com 的回调的签名,他们提供以下描述:

它是您的私钥的 Base64 编码 HMAC-SHA1 摘要的 URL 转义字符串和 URL 未转义消息。

$passkey = urlencode(base64_encode(hash_hmac('sha1', urldecode($str), $private_key, true)));

他们提供了以下 Ruby 示例

encoded_signature = CGI.escape Base64.encode64(HMAC::SHA1::digest(private_key, CGI.unescape(message))).strip

我在从回调返回的样本数据上运行它,但没有得到相同的签名。如何在 PHP 中复制 Ruby 代码?

编辑 问题是发送的尾随空格。

4

1 回答 1

2

您的 PHP 代码与 Ruby 代码匹配。问题一定出在其他地方。

检查密钥是否正确以及消息是否正确解析(urldecode,然后是 json_decode)。

于 2010-06-24T11:34:25.743 回答