Генератор 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. Они используются только для расчета и не сохраняются и не регистрируются.
Сопутствующие инструменты
Кодировщик файлов Base64
Кодируйте любой файл (PDF, ZIP, изображение, исполняемый файл) в текст Base64 для встраивания в JSON, письма, YAML или data URI. Работает локально в браузере, без загрузки на сервер.
Генератор CSR
Создайте запрос на подпись сертификата в формате PEM и соответствующий закрытый ключ RSA. Укажите общее имя, поля организации и размер ключа (2048, 3072 или 4096 бит).
Кодировщик и декодировщик Base58
Кодируйте текст UTF-8 или шестнадцатеричные байты и безопасно декодируйте Base58 с алфавитом Bitcoin, Ripple или Flickr.
Генератор SSL-сертификатов
Создайте самоподписанный сертификат SSL/TLS и закрытый ключ RSA полностью в браузере. Свои Common Name, SAN и срок действия, экспорт в PEM.
Кодировщик шифра A1Z26
Кодируйте текст шифром A1Z26 (A=1, B=2, ... Z=26) или декодируйте числовую последовательность обратно в буквы, выбрав разделитель.
Идентификатор шифрования
Вставьте зашифрованный текст, и идентификатор предложит вероятные схемы кодирования/шифрования: Base64, hex, двоичный, Морзе, Цезарь или подстановочный, JWT и распространенные хеши.
Инструмент доступен на других языках
- HMAC Generator [ID]
- مولّد HMAC [AR]
- HMAC-Generator [DE]
- HMACジェネレーター [JA]
- HMAC-generator [SV]
- HMAC-generator [NL]
- HMAC 생성기 [KO]
- ตัวสร้าง HMAC [TH]
- Generator HMAC [PL]
- Gerador de HMAC [PT]
- Bộ tạo HMAC [VI]
- Générateur HMAC [FR]
- Generador de HMAC [ES]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- HMAC Jeneratörü [TR]
- HMAC 生成器 [ZH]