Как пользоваться: HMAC-генератор
- Вставьте сообщение ровно в том виде, в котором оно подписывается, — для webhook это исходное тело запроса.
- Введите секретный ключ и выберите его кодировку.
- Выберите алгоритм хеширования — HMAC пересчитается мгновенно.
- Вставьте полученную подпись в поле Ожидаемая подпись, чтобы проверить её.
Что такое HMAC?
HMAC (Hash-based Message Authentication Code, RFC 2104) сочетает секретный ключ с хеш-функцией и формирует подпись. Любой, у кого есть ключ, может вычислить то же значение, а без ключа подделать подпись невозможно. API используют HMAC для подписи запросов (AWS Signature v4, многие платёжные шлюзы), а webhook — чтобы вы могли убедиться, что обратный вызов действительно пришёл от отправителя.
Проверка webhook
| Сервис | Заголовок | Алгоритм / кодировка |
|---|---|---|
| GitHub | X-Hub-Signature-256 | HMAC-SHA256, hex, с префиксом sha256= |
| Stripe | Stripe-Signature | HMAC-SHA256 в hex от timestamp.body |
| Shopify | X-Shopify-Hmac-Sha256 | HMAC-SHA256, Base64 |
| Slack | X-Slack-Signature | HMAC-SHA256 в hex от v0:timestamp:body |
Чаще всего подпись не совпадает, потому что тело изменили до подписи: разобрали и заново сериализовали JSON, поменяли пробелы или окончания строк. Всегда подписывайте исходные байты, которые вы получили. Проверка выше принимает hex (с префиксом sha256= или без него), Base64 и Base64url.
HMAC и обычные хеши
Обычный хеш SHA-256 подтверждает целостность, но не подлинность: любой может пересчитать его после изменения сообщения. HMAC включает секрет, поэтому корректное значение могут получить только владельцы ключа. Используйте ключ, длина которого не меньше размера выхода хеш-функции (для SHA-256 — 32 случайных байта). В серверном коде сравнивайте подписи функцией с постоянным временем выполнения, например crypto.timingSafeEqual.
Для хешей без ключа используйте генератор хешей, для подписанных токенов — JWT-кодировщик.
Также ищут как: hmac sha256, hmac sha256 онлайн, подпись webhook, hmac sha512.
Инструменты, которые хорошо сочетаются с HMAC-генератор
- JWT декодер — Вставьте JSON Web Token, чтобы просмотреть его заголовок и payload, узнать, когда истекает срок действия, и проверить подпись.
- Base64 кодер / декодер — Преобразуйте текст в Base64 и обратно с полной поддержкой UTF-8 (акценты, эмодзи), включите URL-safe Base64 или перетащите файл, чтобы получить его строку Base64 или data URI.
- AES шифрование — Защитите заметку, секрет или значение конфигурации паролем с помощью AES-256 или расшифруйте текст, созданный командой openssl enc.
- IBAN-валидатор — Проверьте, корректен ли IBAN, прежде чем переводить деньги или сохранять номер: страну, длину для этой страны, формат счёта и контрольную сумму mod-97.
Часто задаваемые вопросы
Почему мой HMAC не совпадает с подписью webhook?
sha256=.