我正在尝试在 Flutter 中创建此示例的最后一步,但由于某种原因我无法正确完成: https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html
使用他们的签名 key +字符串进行签名,他们得到了这个签名结果:
5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7
使用完全相同的 key /字符串进行签名我最终得到:
fe52b221b5173b501c9863cec59554224072ca34c1c827ec5fb8a257f97637b1
这是我的代码:
var testSigninKey =
'c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9';
var testStringToSign = 'AWS4-HMAC-SHA256' + '\n' +
'20150830T123600Z' + '\n' +
'20150830/us-east-1/iam/aws4_request' + '\n' +
'f536975d06c0309214f805bb90ccff089219ecd68b2577efef23edd43b7e1a59';
var hmac1 = Hmac(sha256, utf8.encode(testSigninKey));
var digest1 = hmac1.convert(utf8.encode(testStringToSign));
print(digest1);
print(hex.encode(digestBytes.bytes));
//both print: fe52b221b5173b501c9863cec59554224072ca34c1c827ec5fb8a257f97637b1
最佳答案
hmac1 调用要求您按原样使用签名 key ,而不是使用它的十六进制字符串表示形式的编码版本。
你应该能够正确地构造 Hmac 对象:
var hmac1 = Hmac(sha256, hex.decode(testSigninKey));
关于amazon-web-services - 无法从亚马逊复制简单的哈希签名示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67040184/