Генератор HMAC

Вычисляйте HMAC-SHA256, SHA-384, SHA-512, SHA-224, SHA-1, MD5, SHA3 или RIPEMD-160 для сообщения с ключом в виде текста, hex или Base64. Вывод в hex или Base64, на лету.

HMAC (RFC 2104) дважды подмешивает ключ в хеш: H((K ⊕ opad) || H((K ⊕ ipad) || message)). Ключи длиннее блока хеш-функции сначала хешируются. На сервере сравнивайте MAC за постоянное время.

Что такое Генератор HMAC?

Вычисляет код аутентификации сообщения на основе хеша с ключом (HMAC, RFC 2104) для сообщения и секретного ключа. Поддерживает SHA-2, SHA-3, SHA-1, MD5 и RIPEMD-160, ключи в виде текста, hex или Base64 и показывает MAC в hex (строчными или прописными) либо в Base64 по мере ввода.

Как пользоваться Генератор HMAC

  1. Введите Сообщение (текст или переключите кодировку на Hex для сырых байтов).
  2. Введите Секретный ключ и выберите, чем он является: текстом (UTF-8), Hex или Base64.
  3. Выберите Алгоритм, например HMAC-SHA-256.
  4. Выберите Формат вывода и скопируйте HMAC.

Пример

Ввод
Message "what do ya want for nothing?", key "Jefe", HMAC-SHA-256
Вывод
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

Тестовый случай 2 из RFC 4231.

Когда использовать Генератор HMAC

Используйте для проверки подписей webhook (Stripe, GitHub, Shopify, Slack), подписи запросов к API, отладки шагов подписи в стиле AWS или проверки тестовых векторов HMAC. Для хеширования паролей он не подходит (используйте bcrypt или Argon2) и не является цифровой подписью: MAC может создать любой, у кого есть ключ.

Как работает Генератор HMAC

HMAC(K, m) = H((K′ ⊕ opad) ‖ H((K′ ⊕ ipad) ‖ m)), где K′ — ключ, дополненный нулями до размера блока хеша (более длинные ключи сначала хешируются), ipad = 0x36 и opad = 0x5C повторяются. Такая конструкция остаётся стойкой даже для хешей вроде MD5 и SHA-1, у которых нарушена стойкость к коллизиям. Дайджесты считает hash-wasm, а результаты совпадают с тестовыми векторами RFC 4231 и RFC 2202.

Распространенные Случаи Использования

  • Проверить подпись X-Hub-Signature-256 GitHub или webhook Stripe
  • Воспроизвести подпись запроса к API при отладке
  • Проверить тестовые векторы HMAC из RFC 4231
  • Получить значения HMAC-SHA1 для устаревшего OAuth 1.0 или отладки TOTP
  • Сравнить результаты двух языков, которые расходятся

Примечание по Безопасности

Ключ и сообщение остаются в вашем браузере. На сервере сравнивайте MAC функцией с постоянным временем выполнения, чтобы избежать атак по времени.

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

Почему мой HMAC не совпадает с заголовком webhook?

Проверьте, что хешируется сырое тело запроса байт в байт (без переформатированного JSON), точный секрет (некоторые провайдеры выдают его в Base64 или с префиксом вроде whsec_) и ожидаемую кодировку результата: GitHub использует hex, Shopify — Base64.

Безопасны ли ещё HMAC-SHA1 и HMAC-MD5?

Как MAC они практически не взломаны, потому что HMAC не опирается на стойкость к коллизиям. Они считаются устаревшими; в новых системах используйте HMAC-SHA-256 или сильнее.

Может ли ключ быть пустым?

RFC 2104 это допускает, и инструмент вычислит значение, но пустой ключ не даёт никакой защиты.

Одно и то же ли HMAC и хеш от ключ + сообщение?

Нет. Простое hash(key + message) уязвимо к атакам удлинения сообщения с SHA-2; двойное хеширование HMAC этого не допускает.

Что сделать дальше

Другие категории