3

Я наткнулся на следующую команду для unix on binance, которую я пытался распаковать. Смотрите здесь: https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md

(Раздел: ПОДПИСАННЫЕ Примеры конечной точки для POST /api /v1 /order)

openssl dgst -sha256 -hmac

Насколько я понимаю, это вызов команды openssl для создания дайджеста, дайджест будет иметь разновидность sha256, как согласовано в стандартных спецификациях. Что я не понимаю, так это флаг -hmac . Что это такое и что оно делает до математического уровня?

Моя попытка решить проблему:

Я выполнил поиск в Google с помощью openssl -hmac и openssl dgst -hmac но первые 10 результатов мне не помогли . Поэтому я думаю, что более опытные пользователи лучше спросить.

Обновления:

Флаг не упоминается в этих документах: https://www.mkssoftware.com/docs/man1/openssl_dgst.1.asp, и поэтому я начинаю верить, что он может не иметь криптографического назначения. Хотя я сейчас не уверен.

Я нашел то, что выглядит как флаг, упомянутый в этом вопросе: https://stackoverflow.com/questions/7285059/hmac-sha1-in-bash

1 ответ1

4

HMAC также называется хеш-ключом. Таким образом, вы можете генерировать один и тот же хеш при проверке, если у вас есть тот же ключ, который использовался при генерации подписи. Результат MAC называется тегом аутентификации.

HMAC - это специальная конструкция, которая использует два вызова хеша - в вашем случае SHA-256 - который используется внутри и не использует никаких других криптографических примитивов. Поэтому его можно рассматривать как особый режим самого хэша. Отсюда и включение в дгст.

В вашем коде отсутствуют ключевые данные, которые, конечно же, необходимы для создания ключевого хэша. Это должно быть представлено после -hmac . К сожалению, openssl требует двоичного формата ключа. Для получения дополнительной информации см. Этот старый разговор в списке рассылки OpenSSL .

РЕДАКТИРОВАТЬ # 1: Копать немного глубже, если вы хотите указать ключ в шестнадцатеричном формате, вы можете использовать строку, как это:

echo -n "Hello world!" | openssl dgst -sha256 -mac hmac -macopt hexkey:01020304

Выходные данные функции являются выходными данными второго запуска хеш-функции, поэтому она не отличается от просто SHA-256, если вы просто посмотрите на размер результата хеш-функции / HMAC. Конечно, содержимое будет полностью отличаться от простого хеширования данных (или ключей и данных, соединенных).


РЕДАКТИРОВАТЬ # 2: Однако вы не указали ключ, так что на самом деле HMAC пропускается и используется SHA-256. Это было помечено как ошибка, см. Здесь

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .