Генератор и проверка HMAC
Создаёт и проверяет подписи HMAC-SHA256 и другие HMAC по секретному ключу.
Необязательно. Значение заголовка GitHub X-Hub-Signature-256 (sha256=…) можно вставить как есть.
HMAC — это подпись, которая вычисляется из сообщения и общего секретного ключа: любой, у кого есть ключ, может вычислить её заново, а любое изменение сообщения или ключа даёт другое значение. Её используют вебхуки (GitHub, Stripe, Slack), подписанные запросы к API и токены JWT HS256. HMAC обновляется прямо во время ввода, а полученную подпись можно вставить и проверить. Всё вычисляет встроенный в браузер Web Crypto, поэтому сообщение и ключ не покидают ваше устройство; бесплатно и без регистрации.
Как создать и проверить HMAC
- Вставьте сообщение точно в том виде, в каком оно было подписано, — для вебхука это «сырое» тело запроса.
- Введите секретный ключ или нажмите «Сгенерировать», чтобы получить случайный; выберите «Hex», если ключ дан в виде шестнадцатеричных байтов.
- Выберите алгоритм (SHA-256, если не указано иное) и скопируйте результат в hex или Base64.
- Чтобы проверить подпись, вставьте её в поле «Проверить подпись» — значение заголовка GitHub вида sha256=… подходит как есть.
Возможности
- HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 и HMAC-SHA512
- Секретный ключ в виде текста (UTF-8) или hex либо случайный 32-байтовый ключ по кнопке «Сгенерировать»
- Результат в hex или Base64, обновляется во время ввода
- Проверка полученной подписи в hex или Base64 (в том числе URL-safe) — с префиксом sha256= от GitHub или v0= от Slack или без него
- Подсказка, если длина подписи соответствует другому алгоритму, с кнопкой для переключения
- Вычисления встроенным в браузер Web Crypto
Это конфиденциально?
Да. HMAC вычисляет встроенный в браузер Web Crypto; сообщение и секретный ключ остаются на этой странице и никуда не загружаются и не сохраняются.
Частые вопросы
Как проверить подпись вебхука GitHub?
Вставьте «сырое» тело запроса как сообщение, секрет вебхука как текстовый ключ, а значение заголовка X-Hub-Signature-256 — в поле «Проверить подпись». GitHub отправляет sha256=, а за ним HMAC-SHA256 тела в hex, и префикс читается как есть.
Как проверить подпись JWT HS256?
Вставьте заголовок и полезную нагрузку токена — всё до второй точки — как сообщение, секрет как ключ, выберите SHA-256 и вставьте третью часть токена в поле «Проверить подпись». Её URL-safe Base64 читается как есть.
Почему подпись не совпадает?
Сообщение должно побайтово совпадать с подписанным: переформатированный JSON, лишний или недостающий перевод строки в конце или окончания строк Windows (CRLF) — всё это меняет HMAC. Текст, введённый здесь, использует переводы строк LF. Проверьте также алгоритм и то, задан ли ключ текстом или в hex.
Совпадает ли результат с OpenSSL?
Да. printf '%s' 'message' | openssl dgst -sha256 -hmac 'key' выводит то же значение в hex, а ключу в hex соответствует -mac HMAC -macopt hexkey:…. Используйте printf или echo -n: обычный echo добавляет перевод строки, который тоже подписывается.
Безопасен ли ещё HMAC-SHA1?
Для HMAC — на практике да: известные коллизии SHA-1 не ломают HMAC-SHA1, поэтому старые вебхуки до сих пор его используют. Для всего нового выбирайте HMAC-SHA256.