Генератор HMAC
HMAC, это алгоритм за большинством подписанных вебхуков, заголовков AWS Signature v4 и JWT-токенов HS256. Введите сообщение и секретный ключ, выберите семейство хешей, и этот генератор произведет HMAC ровно так, как указывает RFC 2104, полезно для проверки того, что собирается отправить ваш бэкенд, или для воспроизведения подписи, полученной от API.
Как вычислить HMAC
-
1
Вставьте сообщение
Точные байты для подписи: полезная нагрузка вебхука, канонический запрос или любая строка.
-
2
Введите секретный ключ
Может быть текстом или hex. Генератор дополняет или хеширует его до размера блока согласно RFC.
-
3
Выберите алгоритм хеширования
SHA-256 по умолчанию; выберите SHA-1, SHA-384, SHA-512 или MD5 для совместимости со старыми системами.
-
4
Скопируйте подпись
Вывод выдаётся в hex в нижнем регистре, готовый к вставке в конфигурацию вебхука или заголовок Authorization.
HMAC под капотом
HMAC оборачивает обычную хеш-функцию в конструкцию с ключом, так что подпись нельзя подделать без ключа.
Рецепт RFC 2104
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
где k', это ключ, дополненный до размера блока хеша, opad = 0x5c повторенный, а ipad = 0x36 повторенный.
Выбор алгоритма
| Алгоритм | Размер блока | Длина вывода | Рекомендуется для |
|---|---|---|---|
| HMAC-SHA-256 | 64 байта | 32 байта | Современный дефолт, подпись вебхуков |
| HMAC-SHA-384 | 128 байт | 48 байт | Подпись API повышенной безопасности |
| HMAC-SHA-512 | 128 байт | 64 байта | Долгоживущие токены |
| HMAC-SHA-1 | 64 байта | 20 байт | Устаревшее (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64 байта | 16 байт | Только устаревшее; избегайте для нового |
Где встречается HMAC
- Вебхуки GitHub, Stripe, Shopify: заголовок
X-Hub-Signature-256,Stripe-Signatureи т. д. - AWS Signature v4: цепочка HMAC-SHA256 поверх канонического запроса.
- JWT HS256: подпись токена это
HMAC-SHA-256(header.payload, secret). - Токены сброса пароля: HMAC поверх user_id + срок действия + секрет сайта.
Частые ошибки
- Передача hex-кодированного ключа как текста вместо предварительного декодирования в байты.
- Подпись не тех байтов полезной нагрузки: некоторые вебхуки подписывают сырое тело запроса, включая пробелы, другие подписывают каноническую форму.
- Использование
==в JavaScript или Python для сравнения подписей; всегда используйте timing-safe сравнение, чтобы противостоять атакам по времени.
Часто задаваемые вопросы
Почти всегда потому, что отличаются байты сообщения. Подпись тела, разобранного как JSON, вносит изменения в пробелах; подписывайте сырое тело запроса. Также убедитесь, что ключ декодируется одинаково (hex против сырых байтов) с обеих сторон.
Да. Если ключ короче размера блока хеша, он дополняется нулями; если длиннее, сначала хешируется. RFC 2104 рекомендует ключи длиной не менее вывода (32 байта для SHA-256).
HMAC по-прежнему устойчив к известным атакам коллизий MD5, потому что атака не переносится на конструкцию HMAC. Тем не менее используйте HMAC-SHA-256 для любого нового кода, инструменты и аудиторы ожидают именно его.
Да. Сообщение и секретный ключ отправляются на наш сервер по зашифрованному HTTPS-соединению, чтобы можно было вычислить HMAC. Они используются только для расчета и не сохраняются и не регистрируются.
Сопутствующие инструменты
Генератор ключей API случайного типа
Создавайте на сервере ключи API длиной 8–128 символов в формате hex, base64url или алфавитно-цифровом формате либо UUIDv4.
Шифр из числа в букву
Преобразуйте числа в буквы и обратно по шифру A=1, B=2 (A1Z26) для головоломок, загадок и подсказок в квест-комнатах.
Генератор ключей PGP
Создайте пару ключей OpenPGP в текстовом формате ASCII и сертификат отзыва с Curve25519, RSA 2048 или RSA 4096.
Генератор MD5
Создайте хеш MD5 для любого текста или файла. Результат, 128-битное значение в шестнадцатеричном формате, вычисляемое полностью в вашем браузере.
Инструмент шифрования текста
Шифруйте и расшифровывайте текстовые сообщения с помощью AES, используя пароль, чтобы прочитать их мог только получатель.
Генератор SHA256
Генерируйте хеши SHA-256 из любого текста. Результат, шестидесятизначный шестнадцатеричный код; используется тот же алгоритм, что и при формировании адресов Биткоина, TLS-сертификатов и JWT-подписей.
Инструмент доступен на других языках
- HMACジェネレーター [JA]
- HMAC-generator [SV]
- HMAC-Generator [DE]
- HMAC Generator [ID]
- مولّد HMAC [AR]
- HMAC-generator [NL]
- Générateur HMAC [FR]
- Generator HMAC [PL]
- Gerador de HMAC [PT]
- Generador de HMAC [ES]
- Bộ tạo HMAC [VI]
- HMAC 생성기 [KO]
- ตัวสร้าง HMAC [TH]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- HMAC Jeneratörü [TR]
- HMAC 生成器 [ZH]