在 python 中构建 AWS S4 身份验证
Constructing AWS S4 authentication in python
我正在尝试使用 python 代码片段创建 here 概述的 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 的十六进制编码表示。其他一些语言示例对此有一个中间变量。
显示各种键的输出只是为了方便:
Note that these are hex-encoded representations of the binary data; the key itself and the intermediate values should be in binary format.
我不熟悉 python 2,但看起来 binascii.hexlify
是完成转换的一种方式。请记住,这种转换只是为了吸引眼球。实际代码使用中间键的二进制表示。
我正在尝试使用 python 代码片段创建 here 概述的 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 的十六进制编码表示。其他一些语言示例对此有一个中间变量。
显示各种键的输出只是为了方便:
Note that these are hex-encoded representations of the binary data; the key itself and the intermediate values should be in binary format.
我不熟悉 python 2,但看起来 binascii.hexlify
是完成转换的一种方式。请记住,这种转换只是为了吸引眼球。实际代码使用中间键的二进制表示。