我在與hash_hmac和AWS簽名版本4個問題我使用他們奠定了這裏的例子:http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.htmlPHP hash_hmac不匹配AWS簽名4例如
輸出是從AWS網站。我想匹配它,我似乎無法看到我做錯了什麼。他們想要二進制輸出,這就是我在每一步提供的。
這裏是我的測試文件:
<?php
// wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY
// HMAC(HMAC(HMAC(HMAC("AWS4" + kSecret,"20110909"),"us-east-1"),"iam"),"aws4_request")
$sign = hash_hmac('sha256', 'AWS4wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY', '20110909', true);
$sign = hash_hmac('sha256', $sign, 'us-east-1', true);
$sign = hash_hmac('sha256', $sign, 'iam', true);
$sign = hash_hmac('sha256', $sign, 'aws4_request', true);
$sign = str_split($sign);
echo "152 241 216 137 254 196 244 66 26 220 82 43 171 12 225 248 46 105 41 194 98 237 21 229 169 76 144 239 209 227 176 231\n";
foreach($sign as $t)
echo ord($t) . ' ';
如果更改函數中參數的順序,則會得到相同的結果,並且是正確的。 – user3377141