OpenSSL не соответствует хэш-файлу Python

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

Код Python:

import hmac

secret = "asdf1234"
string = '{"request"}'

hmac.new(secret, string, hashlib.sha384).hexdigest()
    '92904f1b3c210a4fb19f476c19f24452717e85329aa9ffaba4a5fbe1111c2e3fa7f5a5fb35fdc58b3d158f5f886c3d02'

OpenSSL:

echo -n {"request"} | openssl dgst -sha384 -hmac asdf1234 -hex

(stdin)= 4c3d525b8a7095b9063a3bd974e56f0a5872399365912297d6ee18e400d2b55d0142395ba5fb4f33655ceca209ba9570

Что я делаю неправильно? Верна ли любая реализация?

1 ответ

Решение

Чтобы соответствовать выводу openssl, строка Python должна быть '{request}' скорее, чем '{"request"}',

import hmac
import hashlib
secret = "asdf1234"
string = '{request}'

hmac.new(secret, string, hashlib.sha384).hexdigest()

доходность

'4c3d525b8a7095b9063a3bd974e56f0a5872399365912297d6ee18e400d2b55d0142395ba5fb4f33655ceca209ba9570'

Или, если вы хотите, чтобы команда openssl соответствовала выводу Python, используйте

echo -n '{"request"}' | openssl dgst -sha384 -hmac asdf1234 -hex

который дает

(stdin)= 92904f1b3c210a4fb19f476c19f24452717e85329aa9ffaba4a5fbe1111c2e3fa7f5a5fb35fdc58b3d158f5f886c3d02

В конце концов, входы должны совпадать, чтобы выходы имели шанс на совпадение:

% echo -n {"request"}
{request}

а также

>>> print('{"request"}')
{"request"}
Другие вопросы по тегам