Генератор HMAC 🔒 Работает локально в браузере — ничего не загружается.

Вычислите подпись HMAC с SHA-256/384/512.

    

Сравнение игнорирует регистр и префикс «sha256=», поэтому значение заголовка можно вставить как есть.

Об этом инструменте

HMAC доказывает, что сообщение пришло от того, кто знает общий секрет, и не было изменено — механизм за подписанными вебхуками, подписью API-запросов и многими схемами токенов. Введите сообщение и секретный ключ, выберите SHA-256, SHA-384 или SHA-512 и получите подпись в шестнадцатеричном виде или Base64.

Вычисление использует встроенный Web Crypto API браузера и происходит целиком на вашем устройстве, поэтому секретный ключ никогда не передаётся. Обновляется вживую по мере ввода.

Частые вопросы

Для чего используется HMAC?

HMAC (код аутентификации сообщений на основе хеша) доказывает, что сообщение не было изменено и что оно пришло от того, кто знает общий секретный ключ — именно так сервисы вроде Stripe или GitHub подписывают payload вебхуков, чтобы вы могли проверить подлинность.

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

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

Мой секретный ключ куда-то отправляется?

Нет. HMAC вычисляется локально с помощью Web Crypto API браузера (crypto.subtle). Ваш ключ и сообщение никогда не покидают ваше устройство.

Почему проверка подписи говорит «не совпадает», хотя я скопировал её правильно?

Заголовки вебхуков часто содержат префикс вроде sha256=<hex>, используют другой регистр или имеют пробелы по краям. Верификатор автоматически нормализует регистр и убирает префикс algorithm=, но перепроверьте, что вы выбрали тот же алгоритм хеширования и кодировку ключа (UTF-8/Hex/Base64), что и отправитель.

Какую кодировку ключа выбрать?

Большинство API выдают обычную UTF-8-строку секрета (например, whsec_...) — выбирайте UTF-8. Hex или Base64 выбирайте только если в документации провайдера явно сказано, что ключ закодирован именно так.