我已經看到亞馬遜這個解決方案: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