【发布时间】:2019-02-17 04:32:58
【问题描述】:
我正在尝试根据 Bash 中 https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html 的文档构建一个 AWS Signature v4 Auth 标头以调用 STS GetCallerIdentity API。
现在,我在 Python 中也有同样的过程,在仔细研究了我的脚本和 Python 和 Bash 的输出之后,我发现在 Bash 中为字符串计算的 SHA256 与在 Python 中计算的不同。
p>字符串在我的文本编辑器中看起来相同 - 逐个字符。
但由于 SHA256 不同,我假设这是字符串编码的问题。
Python 脚本使用 UTF8,即使我尝试在 Bash 脚本中使用printf "%s" "${string}" | iconv -t utf-8 | openssl dgst -sha256,哈希值仍然不同。
如何在计算 SHA256 总和之前将 bash 字符串/变量转换为 UTF8。
【问题讨论】:
-
十六进制转储两种情况下的输入并找出它们的不同之处
-
将您的 Python 代码添加到您的问题中。
-
所以我现在知道了这个问题@thatotherguy,谢谢你的建议。
\n在 Python 中被正确解释为0x0A,但在 bash hexdump 输出中显示为5C6E。printf "%s" "${string}"不处理吗? -
我觉得自称是工程师而没有考虑自己转储字节串,我感到很惭愧。我不敢相信我在这上面浪费了这么多时间。 :'( 如果您将评论添加为答案,我会接受。
标签: python bash utf-8 ascii aws-sts