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 в инструментах разработчика браузера, чтобы убедиться, что внешних запросов не делается.