【发布时间】:2014-03-05 05:12:24
【问题描述】:
我遇到了 hash_hmac 和 AWS 签名版本 4 的问题。我正在使用他们在此处列出的示例:http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html
输出来自 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) . ' ';
【问题讨论】:
-
如果你改变函数中参数的顺序,你会得到相同的结果,这是正确的。