python-2.7 - 在 python 中构建 AWS S4 身份验证
问题描述
我正在尝试使用 python 代码片段创建此处概述的 S4 签名。该文档使我感到困惑,因此我希望对以下内容有所了解
1) getSignatureKey 方法对 4 个输入进行签名,但他们显示的输出有一个额外的 kSecret。这个 kSecret 是什么?
2)当我运行程序时,我得到的输出是这样的:
kDate = '\x96\x9f\xbb\x94\xfe\xb5B\xb7\x1e\xdeo\x87\xfeM_\xa2\x9cx\x93B\xb0\xf4\x07GFp\xf0\xc2H\x9e\n\r'
而根据文档的输出是这样的:
kDate = '969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d'
使用哪种正确格式?如何从另一个中得到一个?
3) 输出值似乎也不同(如果我去掉 \x)。这是文档错误吗?
我正在使用 python 2.7
解决方案
kSecret
是原始 aws-access-key-secret 的十六进制编码表示。其他一些语言示例为此提供了一个中间变量。
为各种键显示的输出仅为了方便起见:
请注意,这些是二进制数据的十六进制编码表示;密钥本身和中间值应该是二进制格式。
我不精通python 2,但它看起来像是binascii.hexlify
一种完成转换的方法。请记住,这种转换只是为了您的眼球。实际代码使用中间键的二进制表示。
推荐阅读
- reactjs - 打开时反应原生刷新组件
- android - RecyclerView 从 Room 复制元素
- css - CSS 中隐式和显式定义的列
- docker - 另一个脚本的 terraform 输出
- javascript - javascript - .join 方法返回用逗号连接的字符串
- java - Java UDP洪流跟踪器抓取请求?
- html - 为什么带有换行符的 PRE 元素不会在输出中产生空行?
- html - 导航栏向左浮动,并且不固定在所有设备的中心位置
- php - PhpStorm 在 PHP 起始标记中生成垃圾代码
- javascript - 简单的 JavaScript 数组代码错误,拾取数组的元素并删除