ESC

Генератор HMAC

Результат HMAC появится здесь...

Сравнение HMAC

Вся обработка происходит в вашем браузере через Web Crypto API. Данные не отправляются на сервер.

Примеры использования

Аутентификация API

Генерация HMAC-подписей для аутентификации API-запросов, широко используемая в REST API.

Верификация вебхуков

Проверка полезной нагрузки вебхуков путём сравнения HMAC-подписей от сервисов вроде Stripe или GitHub.

Подпись JWT

Создание HMAC-SHA256 подписей для подписания полезной нагрузки JSON Web Token (JWT).

Возможности

Несколько алгоритмов

Поддержка HMAC-SHA256, HMAC-SHA384, HMAC-SHA512 и HMAC-SHA1

Сравнение HMAC

Сравнение сгенерированного HMAC с ожидаемым значением для проверки целостности сообщения

Несколько форматов вывода

Вывод в шестнадцатеричном или Base64-формате для различных задач интеграции

Web Crypto API

Использование нативного Web Crypto API для безопасной генерации HMAC в браузере

Как пользоваться?

1

Введите сообщение и ключ

Введите или вставьте сообщение и укажите секретный ключ в соответствующих полях.

2

Выберите алгоритм

Выберите алгоритм HMAC (SHA-256, SHA-384, SHA-512 или SHA-1) и формат вывода.

3

Сгенерируйте и скопируйте

Нажмите «Сгенерировать HMAC» и скопируйте результат. При необходимости сравните с ожидаемым HMAC.

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

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

SHA-256 хэш от «hello» всегда одинаков: его может вычислить любой. HMAC-SHA256 от «hello» даёт разный результат для каждого секретного ключа. Обычное хэширование обеспечивает целостность (обнаруживает подделку). HMAC обеспечивает целостность плюс аутентификацию (доказывает, кто подписал). Именно поэтому API используют HMAC для подписи запросов, а не обычный SHA-256.

HMAC-SHA256 — это отраслевой стандарт, который использует большинство сервисов: AWS Signature Version 4, вебхуки Stripe, вебхуки GitHub, вебхуки Shopify. HMAC-SHA512 обеспечивает дополнительный запас безопасности и работает быстрее SHA-256 на 64-битном оборудовании. Не используйте HMAC-SHA1 в новых проектах — применяйте его только при интеграции с устаревшими системами, которые этого требуют.

Оба формата представляют одно и то же значение HMAC в разных кодировках. Hex (шестнадцатеричный) даёт 64 символа для HMAC-SHA256 — удобнее читать и сравнивать вручную. Base64 даёт 44 символа — более компактный, часто используется в заголовках HTTP Authorization, подписях JWT и заголовках API-запросов. Проверьте, какой формат ожидает целевой сервис, прежде чем генерировать.

Когда вы получаете вебхук от Stripe, полезная нагрузка приходит с заголовком X-Stripe-Signature, содержащим HMAC-SHA256 необработанного тела, подписанного секретным ключом вашей конечной точки. Для проверки: вычислите HMAC-SHA256 необработанного тела запроса с помощью вашего секрета, затем сравните со значением заголовка. Если они совпадают, вебхук подлинный. GitHub использует X-Hub-Signature-256 аналогично. Этот инструмент позволяет вычислять и проверять эти подписи без написания кода.

Для HMAC-SHA256 рекомендуемая длина ключа — не менее 32 байт (256 бит), что соответствует размеру вывода хэша. Более короткие ключи снижают безопасность; более длинные допустимы. Никогда не используйте запоминаемые человеком строки в качестве ключей — они слишком предсказуемы. Генерируйте ключи с помощью криптографически стойкого RNG и храните их в переменных окружения или менеджере секретов, никогда в исходном коде.

Сгенерируйте HMAC, затем вставьте ожидаемое значение HMAC в поле «Сравнить». Инструмент сравнивает два значения и сообщает, совпадают ли они. Полезно для проверки подписей вебхуков: вычислите ожидаемый HMAC из полученной полезной нагрузки и вашего ключа, затем сравните с подписью в заголовке запроса. Совпадение подтверждает подлинность вебхука.

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

Что такое HMAC?

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

Где используется HMAC

Если вы интегрировались со Stripe, GitHub или AWS — вы уже использовали HMAC. Stripe подписывает полезную нагрузку вебхуков с помощью HMAC-SHA256, чтобы вы могли убедиться, что они действительно от Stripe. AWS использует HMAC-SHA256 в Signature Version 4 для подписи API-запросов. JWT с алгоритмом HS256 — это буквально HMAC-SHA256 под капотом. Этот инструмент позволяет генерировать и проверять такие подписи без написания кода.

HMAC против обычного хэширования

SHA-256 хэш от «hello» всегда одинаков, кто бы его ни вычислял. HMAC-SHA256 от «hello» различается для каждого секретного ключа — поэтому он подтверждает и то, что сообщение не было изменено, И то, что оно создано тем, кто знает ключ. В этом критическая разница: хэширование обеспечивает целостность, HMAC обеспечивает целостность плюс аутентификацию.

Выбор правильного алгоритма

HMAC-SHA256 — отраслевой стандарт, и его стоит использовать, если нет конкретных причин для другого выбора. HMAC-SHA384 и HMAC-SHA512 создают более длинный вывод для большего запаса безопасности. HMAC-SHA1 поддерживается для обратной совместимости со старыми системами, но не должен использоваться в новых реализациях. Выбор алгоритма не влияет на принцип работы HMAC — он лишь определяет базовую хэш-функцию.

Безопасность и конфиденциальность

Инструмент полностью работает в браузере через Web Crypto API — ту же криптографическую реализацию, которая обрабатывает TLS. Ваш секретный ключ никогда не попадает на сервер. Можете убедиться, запустив инструмент без интернета. В продакшене всегда храните HMAC-ключи в переменных окружения или системах управления секретами, никогда в клиентском коде.

Безопасность и конфиденциальность

Безопасность ваших данных — наш приоритет

Локальная обработка

Вся обработка происходит в вашем браузере

Без передачи данных

Ваши данные не отправляются на наши серверы

Без хранения данных

Данные не хранятся и не передаются

SSL-шифрование

SSL-шифрование для безопасного соединения

Next Step

Также на MoreOnlineTools