SHA256 из визуально похожих строк отличается от Bash vs Python - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь создать заголовок Auth AWS Signature v4 Auth для вызова STS GetCallerIdentity API согласно документации на https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html в Bash.

Теперь у меня то же самоеЯ работаю в Python, и после тщательного изучения моих скриптов и выводов в Python и Bash, я вижу, что SHA256, рассчитанный в Bash для строки, отличается от вычисленного в Python.

Строки Посмотрите то же самое в моем текстовом редакторе - символ за символом.

Но поскольку SHA256 отличается, я предполагаю, что это большая проблема с кодированием строки.

PythonСценарий использует UTF8, и хотя я пытался сделать printf "%s" "${string}" | iconv -t utf-8 | openssl dgst -sha256 в сценарии Bash, значения хеш-функции по-прежнему различаются.

Как преобразовать строки / переменные bash в UTF8 до вычисления суммы SHA256.

1 Ответ

0 голосов
/ 17 февраля 2019

Может быть полезно увидеть, как вы рассчитываете это в Python.Из того, что я вижу, похоже, что вывод такой же.

$ python -c "import hashlib; \
print(hashlib.sha256('test'.encode('utf8')).digest().hex())"
9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

$ printf "%s" test | openssl dgst -sha256
(stdin)= 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...