我已经看到亚马逊这个解决方案:http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.htmlAWS签名V4参数创建签名
,但我不明白的是参数,他们希望有(除kSecret):参数 名单: kSecret kDate kRegion kService kSigning
能有人给我解释一下吗? 感谢你们
我已经看到亚马逊这个解决方案:http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.htmlAWS签名V4参数创建签名
,但我不明白的是参数,他们希望有(除kSecret):参数 名单: kSecret kDate kRegion kService kSigning
能有人给我解释一下吗? 感谢你们
您指向的文档是如何根据密钥派生签名密钥。看看他们的示例代码来计算签名。也许这会帮助你理解。他们创建的每个“k”参数都是先前计算的值的HMAC和密钥中的下一个值。
static byte[] HmacSHA256(String data, byte[] key) throws Exception {
String algorithm="HmacSHA256";
Mac mac = Mac.getInstance(algorithm);
mac.init(new SecretKeySpec(key, algorithm));
return mac.doFinal(data.getBytes("UTF8"));
}
static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName) throws Exception {
byte[] kSecret = ("AWS4" + key).getBytes("UTF8");
byte[] kDate = HmacSHA256(dateStamp, kSecret);
byte[] kRegion = HmacSHA256(regionName, kDate);
byte[] kService = HmacSHA256(serviceName, kRegion);
byte[] kSigning = HmacSHA256("aws4_request", kService);
return kSigning;
}
所以首先他们采取秘密密钥与AWS4
前置和使用为重点,以HMAC日期格式YYYYMMDD
(每文档)。
接下来,他们将得到的HMAC并将其用作HMAC的关键字,例如区域名称us-east-1
。
接下来,他们将得到的HMAC作为HMAC的关键字,例如,服务名称为ec2
。
最后,他们将得到的HMAC作为HMAC的关键字aws4_request
。生成的密钥是您的派生签名密钥。
一旦你有,你可以按如下生成请求签名的签名密钥:在将签名请求
signature = HexEncode(HMAC(derived-signing-key, string-to-sign))
说明可以在这里找到:
http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html