首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS签名v4参数创建签名

AWS签名v4参数创建签名
EN

Stack Overflow用户
提问于 2016-01-13 19:04:30
回答 1查看 99关注 0票数 0

我见过亚马逊的解决方案:http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html

但是我不明白他们想要的参数是什么(除了kSecret):参数的列表: kSecret kDate kRegion kService kSigning

谁能解释一下吗?谢谢你们

EN

回答 1

Stack Overflow用户

发布于 2016-01-13 19:49:34

您所指向的文档是如何基于秘密密钥派生签名密钥的。看看他们计算签名的示例代码。也许这会帮助你理解。他们创建的每个"k“参数都是先前计算值的HMAC和键中的下一个值。

代码语言:javascript
复制
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的关键。得到的密钥是派生的签名密钥。

拥有签名密钥后,可以为请求生成签名,如下所示:

代码语言:javascript
复制
signature = HexEncode(HMAC(derived-signing-key, string-to-sign))

有关将签名应用于请求的说明可在以下位置找到:

http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34774975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档