logo
GeekFormat

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

алгоритм Хаши

Рекомендуемая длина ключа соответствует длине вывода Hash: SHA-1=20 байт, SHA-256=32 байт, SHA-384=48 байт, SHA-512=64 байта

Содержимое сообщения0 символов
Подпись HMAC (Hex)
Ожидание ввода...

Заметки

  • HMAC генерирует подписи на основе ключевых алгоритмов и алгоритмов Хаши для аутентификации источника и целостности.
  • Поддержка SHA-1 / SHA-256 / SHA-384 / SHA-512
  • Генерировать и проверять оба локально в браузерах, не загружая данные
  • Валидация использует фиксированную длину байтами для уменьшения разницы временных рядов

Генерируйте и проверяйте HMAC-подписи онлайн бесплатно, поддержка распространённых алгоритмов серии SHA. Идеально для подписи API, проверки вебхуков и отладки безопасности.

Похожие

Варианты использования

  • Разработка вебхуков Stripe: Отладка обратных вызовов платежей Stripe, проверка корректности заголовка `Stripe-Signature`
  • Интеграция вебхуков GitHub: Проверка подписи `X-Hub-Signature-256` для событий Push и Pull Request GitHub
  • Синхронизация заказов Shopify: Проверка подписи `X-Shopify-Hmac-Sha256` для вебхуков обновления заказов Shopify
  • Подписи ботов Slack: Проверка `X-Slack-Signature` для обратных вызовов событий Slack
  • Отладка разработки JWT: Подпись JWT с помощью HS256, проверка действительности токена
  • Подпись запросов API: Реализация AWS Signature V4 или пользовательских схем подписи API

Функции

  • Поддержка нескольких алгоритмов: HMAC-SHA256/384/512, SHA1, MD5 — покрывает современные API и устаревшие системы
  • Проверка подписи Webhook: Встроенная поддержка форматов подписей Stripe/GitHub/Shopify/Slack с автоматическим разбором
  • Три формата вывода: Hex / Base64 / Base64URL — соответствует любым требованиям API или платформы
  • Генерация в реальном времени: Автоматический расчёт при изменении ввода с задержкой 300 мс, без необходимости нажимать кнопку
  • Режим проверки подписи: Вставьте ожидаемую подпись для сравнения, отображение результата совпадения в реальном времени
  • Определение длины ключа: Мониторинг надёжности ключа в реальном времени с предупреждениями о коротких ключах
  • Обработка в браузере: Web Crypto API для локальных вычислений, ключи никогда не загружаются на сервер
  • Поддержка JWT: Вывод HMAC-SHA256 напрямую пригоден для подписи HS256

Как использовать

  1. Выберите алгоритм: По умолчанию HMAC-SHA256, рекомендуется для современных API
  2. Введите сообщение: Вставьте исходное тело сообщения или содержимое запроса API
  3. Введите ключ: Введите Webhook Secret или API Secret
  4. Выберите формат: Выберите формат вывода (hex для Stripe, Base64URL для JWT)
  5. Проверьте подпись: Переключитесь в режим проверки, вставьте ожидаемую подпись для сравнения

Часто задаваемые вопросы

Чем HMAC отличается от обычного хеширования?

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

Как проверить подписи вебхуков Stripe/GitHub/Shopify?

Различные платформы форматируют подписи по-разному: Stripe использует заголовок `Stripe-Signature` с форматом `t=timestamp,v1=hex_signature`, подписывая строку `timestamp.payload`; GitHub использует `X-Hub-Signature-256` с форматом `sha256=hex_signature`; Shopify использует `X-Shopify-Hmac-Sha256` со значением в кодировке Base64. Этот инструмент поддерживает прямую проверку этих распространённых форматов.

Чем отличаются форматы вывода Hex, Base64 и Base64URL?

Hex — это шестнадцатеричный формат (0-9, A-F), читаемый человеком, удобен для отладки. Base64 — 64-символьная кодировка, более компактная, идеальна для встраивания в JSON. Base64URL — URL-безопасная версия (заменяет +/ на -_), используется в заголовках JWT и параметрах URL.

Какой алгоритм HMAC следует использовать?

**Рекомендуется HMAC-SHA256**: это современный стандарт для API и вебхуков (используется Stripe, GitHub, Shopify, Slack), с 32-байтным выводом и универсальной поддержкой. SHA-512 обеспечивает более высокую безопасность, но более длинный вывод (64 байта). SHA1 — только для устаревших систем. MD5 устарел и должен использоваться только для очень старых API.

Каковы требования к длине ключа?

Чем длиннее ключ, тем безопаснее. Минимум 16 символов (128 бит), для продакшена рекомендуется 32+ символа. Инструмент отслеживает длину ключа и предупреждает, если он слишком короткий. Используйте криптографически безопасные генераторы случайных чисел для ключей, а не простые пароли или предсказуемые строки.

Почему проверка подписи показывает несовпадение?

Распространённые причины: 1) Сообщение содержит лишние пробелы или переводы строк; 2) Платформа подписывает составную строку (например, Stripe подписывает `timestamp.payload`); 3) Подпись содержит префикс, который нужно удалить (например, `sha256=` у GitHub); 4) Использован другой алгоритм. Убедитесь, что обе стороны используют одинаковые параметры.

Можно ли использовать HMAC для подписи JWT?

Да. Алгоритм HS256 в JWT — это HMAC-SHA256, а HS512 — HMAC-SHA512. Вывод HMAC-SHA256 этого инструмента можно напрямую использовать как содержимое подписи для HS256. Заголовок и полезная нагрузка JWT кодируются в Base64URL, затем подписываются с помощью HS256.

Безопасен ли этот онлайн-инструмент HMAC?

Этот инструмент использует Web Crypto API для всех вычислений локально в вашем браузере. Ключи и сообщения никогда не отправляются на какой-либо сервер. Вы можете проверить это, открыв панель Network в инструментах разработчика браузера — никаких внешних запросов не делается. Подходит для тестирования и разработки; для крайне конфиденциальных продакшен-ключей используйте локальные офлайн-инструменты.

Можно ли подделать подпись HMAC?

Нет. Безопасность HMAC зависит от секретности ключа и устойчивости хеш-алгоритма к коллизиям. При достаточно длинных и случайных ключах нет известных атак, способных подделать действительную подпись HMAC. Регулярная ротация ключей — хорошая практика безопасности.

Что такое генератор и верификатор HMAC?

HMAC (Hash-based Message Authentication Code) — широко используемая технология аутентификации сообщений, определённая в RFC 2104. HMAC обрабатывает ключ вместе с сообщением через хеш-функцию для получения подписи фиксированной длины. В отличие от обычного хеширования, HMAC требует знания ключа для генерации или проверки подписи, гарантируя как целостность сообщения, так и подлинность.

**HMAC — основа безопасности современных API**. Stripe, GitHub, Shopify, Slack и Twilio используют HMAC-SHA256 для подписи событий вебхуков, обеспечивая подтверждение, что запросы действительно поступают от платформы. AWS использует HMAC-SHA256 для подписи запросов Signature V4. Алгоритм HS256 в JWT по сути является HMAC-SHA256. Понимание HMAC — первый шаг к освоению безопасности API.

**Разные платформы имеют разные форматы подписей**: формат Stripe — `t=timestamp,v1=hex_signature`, подписывается `timestamp.payload`; GitHub использует `X-Hub-Signature-256` с форматом `sha256=hex_signature`; Shopify использует `X-Shopify-Hmac-Sha256` со значением в кодировке Base64. Этот инструмент поддерживает автоматический разбор и проверку этих распространённых форматов.

**Почему проверка подписи не удаётся?** Наиболее частая причина — несовпадение формата сообщения: платформа может подписывать `timestamp.payload` вместо исходного тела сообщения; или сообщение содержит лишние переводы строк; или подпись содержит префикс (например, `sha256=`), который нужно удалить. Внимательно проверьте документацию платформы и сравнивайте, используя исходное шестнадцатеричное значение.

Этот инструмент использует встроенный в браузер **Web Crypto API** (SubtleCrypto) для вычислений HMAC — ту же криптографическую библиотеку, которая обеспечивает работу HTTPS и TLS. Все вычисления выполняются локально; ключи и сообщения никогда не отправляются на какой-либо сервер. Откройте панель Network в инструментах разработчика браузера, чтобы убедиться, что внешних запросов не делается.