gpt4 book ai didi

c++ - AWS 签名版本 4 发生了什么变化

转载 作者:行者123 更新时间:2023-11-28 04:51:44 25 4
gpt4 key购买 nike

几年前,我编写了一些 C++ 代码来登录 AWS (Amazon Web Service)。当时效果很好。我已经有一段时间没有使用它了,现在它不起作用。

"com.amazon.coral.service#InvalidSignatureException"

我想我已经将范围缩小到散列函数。此单元测试失败:

TEST( aws_hash )
{
// unit test the hashing function used for AWS authentication
// sample input and expected results from Signature Version 4 Test Suite
// https://docs.aws.amazon.com/general/latest/gr/signature-v4-test-suite.html
// specifically the get-vanilla-query
// note that this is step 1 of the signing process an does not involve the secret key.

// input string
std::string query =
"GET / HTTP/1.1\n"
"Host:example.amazonaws.com\n"
"X-Amz-Date:20150830T123600Z";

// calculate hash of input
SHA256 sha256;
std::string thehash = sha256( query );

// expected hash value from test suite
// ( last line of get-vanilla-query.creq )
std::string expected = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";

// did we get the expected hash?
CHECK_EQUAL( expected, thehash );
}

输出:

C:\unit_test\main.cpp(47): error: Failure in aws_hash:
Expected e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
but was 509955df496ae2f4fdc25af95ccf5406099e4a2556523b7ed80f4fab21ac1869

可以在 https://github.com/JamesBremner/sha256 查看我使用的散列函数的代码

有什么我应该注意的变化吗?

我的单元测试有问题吗?

最佳答案

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

这是一个空字符串的 SHA-256 散列(参见 https://crypto.stackexchange.com/a/26135/25027)。

Signature V4 与 Signature V2 完全不同。您首先散列正文(HTTP 请求正文,不包括 header ),使用没有请求正文时显示的值。

Signature V4 的实际输入中没有与您的//输入字符串 对应的部分。

这是您将要发送的 HTTP 请求的示例,但它不会直接进入签名算法。

canonical request structure这是:

CanonicalRequest =
HTTPRequestMethod + '\n' +
CanonicalURI + '\n' +
CanonicalQueryString + '\n' +
CanonicalHeaders + '\n' +
SignedHeaders + '\n' +
HexEncode(Hash(RequestPayload))

此处,在 HexEncode(Hash(RequestPayload)) 中,RequestPayload 指向请求正文,而不是 header 。当没有正文时,使用空字符串,空字符串的哈希值就是显示的值。

关于c++ - AWS 签名版本 4 发生了什么变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com