Калькулятор HMAC

HMAC-SHA256 или HMAC-SHA512 сообщения с секретным ключом — пересчёт на лету при вводе. Вывод в hex, ввод в UTF-8, пустое сообщение тоже считается.

Введённые данные и файлы остаются в браузере

Ключ и сообщение

Вставьте подписываемое сообщение (например, тело вебхука) или загрузите пример.

Введите секретный ключ — HMAC вычисляется по мере ввода.

На этой странице

Калькулятор HMAC вычисляет код аутентификации сообщения с ключом (RFC 2104) на SHA-256 или SHA-512 прямо во время ввода. Он помогает проверить подпись вебхука или воспроизвести подпись API-запроса; ключ и сообщение остаются в браузере.

Подробное описание функциональности

Введите Ключ и Сообщение — оба берутся как текст в UTF-8 ровно в том виде, как введены. Результат пересчитывается при каждом нажатии клавиши и смене алгоритма и выводится строчным hex: 64 символа для HMAC-SHA256, 128 — для HMAC-SHA512. Вычисление выполняет модуль на Rust/WebAssembly внутри страницы.

Пустое сообщение — допустимый ввод: с ключом key HMAC-SHA256 от пустого сообщения равен 5d5d139563c95b5967b9bd9a8c9b233a9dedb45072794cd232dc1b74832607d0, как в OpenSSL и других библиотеках. Без ключа вывод остаётся пустым. Ключи длиннее блока хэш-функции (64 байта для SHA-256, 128 для SHA-512) сначала хэшируются, как требует стандарт.

Поле ключа принимает только текст, поэтому секрет, который сервис выдаёт в hex или Base64, нужно вводить в том виде, в каком сервис сам использует его как ключ. Результаты сверены с тестовыми векторами RFC 4231. Ничего не сохраняется: после перезагрузки поля пустые.

Практические примеры

Классический тестовый вектор: ключ key, сообщение The quick brown fox jumps over the lazy dog, SHA-256 → f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8.

RFC 4231, тест 2: ключ Jefe, сообщение what do ya want for nothing?, SHA-256 → 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843.

Пустое сообщение: ключ key и пустое сообщение дают 5d5d139563c95b5967b9bd9a8c9b233a9dedb45072794cd232dc1b74832607d0 — то же, что printf '' | openssl dgst -sha256 -hmac key.

Проверка вебхука: вставьте исходное тело запроса как сообщение, а секрет вебхука — как ключ; если провайдер присылает sha256=<hex>, сравнивайте с результатом только hex-часть.

Как использовать этот инструмент

  1. Введите ключ

    Введите или вставьте общий секрет в поле Ключ.

  2. Введите сообщение

    Вставьте в Сообщение ровно те байты, которые подписывались, или оставьте поле пустым, чтобы посчитать HMAC пустой строки.

  3. Выберите алгоритм

    Выберите SHA-256 или SHA-512 в поле Алгоритм — Вывод обновится сразу (или нажмите Вычислить).

  4. Скопируйте или очистите

    Копировать забирает hex-значение, Очистить опустошает оба поля.

Советы и лучшие практики

  • Подписывайте ровно те байты, что подписал сервер: переформатированный JSON, другой порядок ключей или лишний перевод строки в конце меняют HMAC.
  • В своём коде сравнивайте HMAC за постоянное время; визуальная сверка здесь — только для отладки.
  • Секрет, вставленный с пробелом или переводом строки в конце, — это другой ключ; проверьте поле, если значения не сходятся.
  • HMAC-SHA512 не «вдвое надёжнее» в обычных задачах — берите тот алгоритм, который ожидает другая сторона.
  • Если ожидаемое значение в Base64, это те же байты, что и в hex-выводе: переведите одно в другое перед сравнением.