amazon-web-services - 无法从亚马逊复制简单的哈希签名示例

标签 amazon-web-services flutter dart hash

我正在尝试在 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/

相关文章:

Flutter - 预期 : should do the following in order: emits an event Empty, NumberTriviaError,实际:空:不是 Stream 或 SteamQue

java - Apache Flink 与 Hadoop 2.8.0 结合使用进行 S3A 路径样式访问

amazon-web-services - 使用脚本为现有 SQS 队列创建警报

postgresql - Flutter + Dart App与Postgres数据库的连接与查询

Dart/flutter : Error "Stream has already been listened to." && "await for" inside fa "for loop" fails

android - Flutter build apk - 请更新您的 settings.gradle 文件

android - 使用 Amazon Device Farm 或类似工具检查浏览器

mysql - SQL 查询不适用于 RDS

android - Future <List <String>> 在迭代图像列表时返回 null

android - utf8.decoder 在最新的 Flutter 升级后不工作