Php 代码赢得';无法创建正确的HMAC-SHA256签名

Php 代码赢得';无法创建正确的HMAC-SHA256签名,php,signature,sha256,hmac,Php,Signature,Sha256,Hmac,我正在尝试使用HMAC-SHA256协议创建基于哈希的消息身份验证码(HMAC) 我有密钥和字符串,而且我知道应该输出什么 输出应为:i91nKc4PWAt0JJIdXwz9HxZCJDdiy6cf%2FMj6vPxyYIs 但我得到的是0ahkosb8sCjCJoKzOwtmrdIKQoJVZnjRqZCxcdgtMA8= 这是我的密码 $canonicalStringGet = "GET\n/v2/tenants/12111048-53df-43b2-b67c-6543352be8

我正在尝试使用HMAC-SHA256协议创建基于哈希的消息身份验证码(HMAC)

我有密钥和字符串,而且我知道应该输出什么

输出应为:i91nKc4PWAt0JJIdXwz9HxZCJDdiy6cf%2FMj6vPxyYIs

但我得到的是0ahkosb8sCjCJoKzOwtmrdIKQoJVZnjRqZCxcdgtMA8=

这是我的密码

$canonicalStringGet = "GET\n/v2/tenants/12111048-53df-43b2-b67c-6543352be8d9\nAuroraKey=AKIAIOSFODNN7EXAMPLE\nTimestamp=2016-02-20%2001:51:09%20UTC\nfirst_name=John&last_name=Doe&middle_name=Billy%20Joe\n"; 
        
$sig = base64_encode(hash_hmac('sha256', $canonicalStringGet, "bPxRfiCbPxRfiCYEXAMPLEKEYYEXAMPLEKEY", true));

echo $sig;

有人能帮忙吗?

您正在对结果进行base64编码。您的“输出应该是”字符串中有一个
%
字符。百分号不是一个数字。所以你永远不会得到你所期待的字符串。为什么您认为这是您应该看到的输出?Base64编码是错误的。您需要进行Base64UrlEncode。看我的。