验证通知签名(PHP)

验证通知签名(PHP),php,notifications,signature,Php,Notifications,Signature,我需要验证ankoder.com回调的签名,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::SHA

我需要验证ankoder.com回调的签名,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代码

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

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


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

虽然我还没有找到解决方案,但我现在完全相信错误在于输入字符串,因此我接受这个答案。