Генератор 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
- Введите Сообщение (текст или переключите кодировку на Hex для сырых байтов).
- Введите Секретный ключ и выберите, чем он является: текстом (UTF-8), Hex или Base64.
- Выберите Алгоритм, например HMAC-SHA-256.
- Выберите Формат вывода и скопируйте 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-256GitHub или 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 этого не допускает.