Генератор и верификатор HMAC
Рекомендуемая длина ключа соответствует длине вывода Hash: SHA-1=20 байт, SHA-256=32 байт, SHA-384=48 байт, SHA-512=64 байта
Заметки
- • HMAC генерирует подписи на основе ключевых алгоритмов и алгоритмов Хаши для аутентификации источника и целостности.
- • Поддержка SHA-1 / SHA-256 / SHA-384 / SHA-512
- • Генерировать и проверять оба локально в браузерах, не загружая данные
- • Валидация использует фиксированную длину байтами для уменьшения разницы временных рядов
Генерируйте и проверяйте HMAC-подписи онлайн бесплатно, поддержка распространённых алгоритмов серии SHA. Идеально для подписи API, проверки вебхуков и отладки безопасности.
Похожие
Что такое генератор и верификатор HMAC?
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 в инструментах разработчика браузера, чтобы убедиться, что внешних запросов не делается.
Варианты использования
- Разработка вебхуков Stripe: Отладка обратных вызовов платежей Stripe, проверка корректности заголовка `Stripe-Signature`
- Интеграция вебхуков GitHub: Проверка подписи `X-Hub-Signature-256` для событий Push и Pull Request GitHub
- Синхронизация заказов Shopify: Проверка подписи `X-Shopify-Hmac-Sha256` для вебхуков обновления заказов Shopify
- Подписи ботов Slack: Проверка `X-Slack-Signature` для обратных вызовов событий Slack
- Отладка разработки JWT: Подпись JWT с помощью HS256, проверка действительности токена
- Подпись запросов API: Реализация AWS Signature V4 или пользовательских схем подписи API
Как использовать
- Выберите алгоритм: По умолчанию HMAC-SHA256, рекомендуется для современных API
- Введите сообщение: Вставьте исходное тело сообщения или содержимое запроса API
- Введите ключ: Введите Webhook Secret или API Secret
- Выберите формат: Выберите формат вывода (hex для Stripe, Base64URL для JWT)
- Проверьте подпись: Переключитесь в режим проверки, вставьте ожидаемую подпись для сравнения
Функции
- Поддержка нескольких алгоритмов: HMAC-SHA256/384/512, SHA1, MD5 — покрывает современные API и устаревшие системы
- Проверка подписи Webhook: Встроенная поддержка форматов подписей Stripe/GitHub/Shopify/Slack с автоматическим разбором
- Три формата вывода: Hex / Base64 / Base64URL — соответствует любым требованиям API или платформы
- Генерация в реальном времени: Автоматический расчёт при изменении ввода с задержкой 300 мс, без необходимости нажимать кнопку
- Режим проверки подписи: Вставьте ожидаемую подпись для сравнения, отображение результата совпадения в реальном времени
- Определение длины ключа: Мониторинг надёжности ключа в реальном времени с предупреждениями о коротких ключах
- Обработка в браузере: Web Crypto API для локальных вычислений, ключи никогда не загружаются на сервер
- Поддержка JWT: Вывод HMAC-SHA256 напрямую пригоден для подписи HS256
Часто задаваемые вопросы
Чем HMAC отличается от обычного хеширования?
Обычные хеш-функции (например, SHA256) вычисляют только дайджест самого сообщения — это может сделать кто угодно. HMAC добавляет секретный ключ в процесс хеширования, поэтому только стороны, владеющие ключом, могут сгенерировать или проверить действительную подпись. HMAC гарантирует как целостность сообщения, так и подлинность, тогда как обычное хеширование проверяет только целостность.
Как проверить подписи вебхуков Stripe/GitHub/Shopify?
Различные платформы форматируют подписи по-разному: Stripe использует заголовок `Stripe-Signature` с форматом `t=timestamp,v1=hex_signature`, подписывая строку `timestamp.payload`; GitHub использует `X-Hub-Signature-256` с форматом `sha256=hex_signature`; Shopify использует `X-Shopify-Hmac-Sha256` со значением в кодировке Base64. Этот инструмент поддерживает прямую проверку этих распространённых форматов.
Чем отличаются форматы вывода Hex, Base64 и Base64URL?
Hex — это шестнадцатеричный формат (0-9, A-F), читаемый человеком, удобен для отладки. Base64 — 64-символьная кодировка, более компактная, идеальна для встраивания в JSON. Base64URL — URL-безопасная версия (заменяет +/ на -_), используется в заголовках JWT и параметрах URL.
Какой алгоритм HMAC следует использовать?
**Рекомендуется HMAC-SHA256**: это современный стандарт для API и вебхуков (используется Stripe, GitHub, Shopify, Slack), с 32-байтным выводом и универсальной поддержкой. SHA-512 обеспечивает более высокую безопасность, но более длинный вывод (64 байта). SHA1 — только для устаревших систем. MD5 устарел и должен использоваться только для очень старых API.
Каковы требования к длине ключа?
Чем длиннее ключ, тем безопаснее. Минимум 16 символов (128 бит), для продакшена рекомендуется 32+ символа. Инструмент отслеживает длину ключа и предупреждает, если он слишком короткий. Используйте криптографически безопасные генераторы случайных чисел для ключей, а не простые пароли или предсказуемые строки.
Почему проверка подписи показывает несовпадение?
Распространённые причины: 1) Сообщение содержит лишние пробелы или переводы строк; 2) Платформа подписывает составную строку (например, Stripe подписывает `timestamp.payload`); 3) Подпись содержит префикс, который нужно удалить (например, `sha256=` у GitHub); 4) Использован другой алгоритм. Убедитесь, что обе стороны используют одинаковые параметры.
Можно ли использовать HMAC для подписи JWT?
Да. Алгоритм HS256 в JWT — это HMAC-SHA256, а HS512 — HMAC-SHA512. Вывод HMAC-SHA256 этого инструмента можно напрямую использовать как содержимое подписи для HS256. Заголовок и полезная нагрузка JWT кодируются в Base64URL, затем подписываются с помощью HS256.
Безопасен ли этот онлайн-инструмент HMAC?
Этот инструмент использует Web Crypto API для всех вычислений локально в вашем браузере. Ключи и сообщения никогда не отправляются на какой-либо сервер. Вы можете проверить это, открыв панель Network в инструментах разработчика браузера — никаких внешних запросов не делается. Подходит для тестирования и разработки; для крайне конфиденциальных продакшен-ключей используйте локальные офлайн-инструменты.
Можно ли подделать подпись HMAC?
Нет. Безопасность HMAC зависит от секретности ключа и устойчивости хеш-алгоритма к коллизиям. При достаточно длинных и случайных ключах нет известных атак, способных подделать действительную подпись HMAC. Регулярная ротация ключей — хорошая практика безопасности.
- Безопасное сравнение строк
- Двоичное Кодирование
- Шифр Цезаря
- Азбука Морзе
- Hex Кодирование
- Видео в Base64
- Base64 в видео
- Изображение в Base64
- Base64 в изображение
- Текст в Base64
- Base64 в текст
- Проверка хеша файла
- Файл в Base64
- Base64 в Файл
- Аудио в Base64
- Base64 в Аудио
- AES-шифрование и расшифровка
- DES Шифрование
- Кодировщик и Декодер Base32
- Base58 кодирование и декодирование
- Кодирование Base64
- Декодирование Base64
- Сравнение Base64
- Разбиение Base64
- Base64 — объединение строк
- Форматирование Base64
- Валидация Base64
- Пакетное кодирование Base64
- Пакетное декодирование Base64
- Очистка Base64
- Обработка заполнения Base64
- Base64 в Hex
- Преобразователь Base64 DataURL
- Base64-Hex конвертер
- Base85 Кодирование
- Генератор и верификатор HMAC
- PBKDF2
- Хеш MD5
- SHA-256 хэш
- SHA1 хеш
- Хеш SHA512
- JWT
- HTML Кодирование
- Unicode экранирование
- URL-кодирование
- Base64 URL-Safe
- MIME Base64
- Обфускация Java
- Обфускация JS
- Обфускация PHP
- Обфускация Python
- Статистика длины Base64