Toolonit
  1. Главная
  2. Шифрование
  3. HMAC

Генератор и проверка HMAC

Создаёт и проверяет подписи HMAC-SHA256 и другие HMAC по секретному ключу.

Байт: 0
Формат ключа
Алгоритм
Вывод
HMAC-SHA-256Введите секретный ключ, чтобы увидеть HMAC.

Необязательно. Значение заголовка GitHub X-Hub-Signature-256 (sha256=…) можно вставить как есть.

HMAC — это подпись, которая вычисляется из сообщения и общего секретного ключа: любой, у кого есть ключ, может вычислить её заново, а любое изменение сообщения или ключа даёт другое значение. Её используют вебхуки (GitHub, Stripe, Slack), подписанные запросы к API и токены JWT HS256. HMAC обновляется прямо во время ввода, а полученную подпись можно вставить и проверить. Всё вычисляет встроенный в браузер Web Crypto, поэтому сообщение и ключ не покидают ваше устройство; бесплатно и без регистрации.

Как создать и проверить HMAC

  1. Вставьте сообщение точно в том виде, в каком оно было подписано, — для вебхука это «сырое» тело запроса.
  2. Введите секретный ключ или нажмите «Сгенерировать», чтобы получить случайный; выберите «Hex», если ключ дан в виде шестнадцатеричных байтов.
  3. Выберите алгоритм (SHA-256, если не указано иное) и скопируйте результат в hex или Base64.
  4. Чтобы проверить подпись, вставьте её в поле «Проверить подпись» — значение заголовка 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.

Похожие инструменты