在bash vs python中,视觉上相似字符串的SHA256不同



我正在尝试根据https://docs.aws.aws.aws.amazon.com/amazons3/amazons3/latest/api/api https://docs.aws.aws.aws.aws.aws.aws.aws.aws.aws.aws.aps/api构建AWS签名v4 auth标题来调用 STS GetCallerIdentity api/sig-v4-header基于bash中的auth.html。

现在,我在Python中有相同的过程,并且在Python和Bash中仔细地浏览了我的脚本和输出之后,我看到在bash中计算出的SHA256字符串中的SHA256与在Python中计算的sha256不同。p>字符串外观在我的文本编辑器中相同 - 字符。

,但是由于SHA256有所不同,我假设这是字符串编码的问题。

Python脚本使用UTF8,即使我尝试在bash脚本中执行printf "%s" "${string}" | iconv -t utf-8 | openssl dgst -sha256,哈希值仍然有所不同。

在计算SHA256总和之前,如何将bash字符串/变量转换为UTF8。

查看如何在Python中计算它可能会有所帮助。从我所看到的,看起来输出相同。

$ python -c "import hashlib; 
print(hashlib.sha256('test'.encode('utf8')).digest().hex())"
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
$ printf "%s" test | openssl dgst -sha256
(stdin)= 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

最新更新