Инструменты
Руководства

Генератор HMAC

Крипто

Вычисляет подписи HMAC-SHA-1/256/384/512 через Web Crypto. Вывод в Hex или Base64, полностью в браузере.

100 % на клиенте Без бэкенда

Удалённые URL не запрашиваются; вставьте JSON напрямую.

Введите сообщение и секретный ключ для вычисления HMAC.
HMAC
Ваш секретный ключ не покидает браузер.
На этой странице

Что такое HMAC?#

HMAC расшифровывается как Hash-based Message Authentication Code (код аутентификации сообщений на основе хеша). Обычный хеш (вроде SHA-256) отвечает на вопрос «изменился ли этот байтовый поток?». HMAC отвечает на более сильный: «изменился ли этот байтовый поток, и отправлен ли он тем, кто действительно знает мой общий секретный ключ?». Эта разница существенна везде, где сообщение пересекает канал, которому вы не полностью доверяете, — callback’и webhook’ов, подписанные URL, подпись API-запросов, межсервисные токены.

Механически HMAC подмешивает секретный ключ в хеш-функцию заданным образом (два раунда с паддингом), так что подделать дайджест без ключа невозможно. Результат — байтовая строка фиксированной длины, размер которой совпадает с нижележащим хешем: 20 байт для SHA-1, 32 для SHA-256, 48 для SHA-384, 64 для SHA-512.

Страница вычисляет HMAC прямо в вашем браузере через Web Crypto API. Вы выбираете хеш, вставляете сообщение и секрет, получаете дайджест в Hex или Base64.

Как пользоваться#

  1. Введите или вставьте Сообщение — payload, который нужно аутентифицировать. Это те байты, которые получатель будет хешировать на своей стороне.
  2. Введите Секретный ключ. По умолчанию поле скрыто; нажмите значок глаза справа, чтобы показать его при вводе. И ключ, и сообщение кодируются как UTF-8.
  3. Выберите Алгоритм:
    • SHA-1 — 160 бит. Быстрый, но подходит только для устаревших схем HMAC (некоторые старые потоки подписи всё ещё его требуют). Не используйте SHA-1 для цифровых подписей.
    • SHA-256 — 256 бит. Современный стандарт; подавляющее большинство подписей webhook’ов (Stripe, GitHub, Slack-подобные потоки) используют HMAC-SHA-256.
    • SHA-384 / SHA-512 — более длинные дайджесты, чуть выше стойкость к коллизиям, немного медленнее. Выбирайте, когда принимающая система явно требует этого.
  4. Выберите Формат вывода: Hex (типично для заголовков в стиле X-Signature) или Base64 (типично, когда дайджест встроен в JSON или токен).
  5. Нажмите Создать. Дайджест появится в правой панели; строка состояния показывает алгоритм и длину в байтах как проверку на адекватность. Копировать забирает его.

Ключевые возможности#

  • На базе Web Crypto. Использует нативный crypto.subtle браузера — тот же примитив, что в продакшен-коде, а не JavaScript-реализацию.
  • Проверка длины. Каждый дайджест сверяется с ожидаемой для алгоритма длиной в байтах, поэтому обрезанный или подменённый результат не проскочит незаметно.
  • Hex или Base64. Переключение одним кликом; без повторного ввода.
  • Секрет остаётся локальным. Поле ключа отображается как пароль и никогда не покидает страницу — бэкенда нет.
  • Учитывает защищённый контекст. Если страница вдруг загружена по обычному HTTP, crypto.subtle недоступен — инструмент прямо об этом сообщает, а не выдаёт неверный ответ.

Разбор примера#

Классическая эталонная пара (RFC 4231) использует ключ Jefe и сообщение what do ya want for nothing?. На этой странице при SHA-256 и Hex дайджест равен:

5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

Переключитесь на SHA-512 с теми же входами — и дайджест удвоится в длину:

164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737

Оба значения воспроизводятся прямо здесь: загрузите Пример, затем Создать. Эта же пара — то, чем собственный набор тестов инструмента проверяет корректность: если вы когда-нибудь получите другой дайджест, значит, страницу подменили.

FAQ#

SHA-256 или SHA-512 — что использовать?#

Для HMAC конкретно SHA-256 — прагматичный стандарт: его применяют все крупные подписыватели webhook’ов, он быстр, а 256 бит дайджеста уже далеко за пределами перебора. Переходите на SHA-512, только если (а) этого требует принимающая система или (б) вы проектируете новый протокол с нуля и хотите дополнительный запас по коллизиям ценой умеренной потери скорости. SHA-1 избегайте вовсе, кроме случаев подгонки под устаревшую систему.

HMAC — это то же самое, что зашифровать сообщение?#

Нет. HMAC только аутентифицирует — доказывает, что сообщение не было изменено и пришло от того, кто владеет ключом. Само сообщение остаётся открытым текстом. Если нужна и конфиденциальность, скомбинируйте HMAC со схемой шифрования или используйте режим аутентифицированного шифрования вроде AES-GCM.

Можно ли восстановить секретный ключ из дайджеста?#

Нет. Дайджест — односторонняя функция от сообщения и ключа; восстановить ключ по выходу вычислительно нецелесообразно. При этом короткий или угадываемый ключ всё же можно подобрать перебором, проверяя кандидатов офлайн, — поэтому используйте ключ хотя бы со 128 битами настоящей энтропии, а не придуманный человеком пароль.

Получатель говорит, что моя подпись не совпадает. Что проверить первым делом?#

В девяти случаях из десяти — представление байтов сообщения: завершающие переводы строки, URL-кодирование против сырого тела, пробелы в JSON или другой порядок полей. Сравните в точности те байты, что вы подписали, с теми, что хешировал получатель, символ за символом, прежде чем проверять что-либо ещё.