Для разработчиков / Подписи
Генератор HMAC (SHA-256, SHA-512)
Создайте подпись HMAC для сообщения и секретного ключа с помощью SHA-256, SHA-384, SHA-512 или SHA-1 в шестнадцатеричном формате и Base64 — для проверки подписей webhook и API.
Генератор HMAC (SHA-256, SHA-512): HMAC объединяет секретный ключ с сообщением с помощью хеш-функции, поэтому такую же подпись может создать только тот, у кого есть ключ. Вычисление выполняется в Web Crypto API вашего браузера — той же реализации, которую браузер использует для HTTPS. Пустой ключ допустим: в соответствии со стандартом HMAC он считается ключом длиной 0 байт. Работает на 100% локально в вашем браузере, файлы на сервер не загружаются.
- Категория
- Инструменты для разработчиков
- Запуски
- В вашем браузере
- Стоимость
- Бесплатно · без регистрации
- Доступность
- Готово к использованию
Полностью работает в браузере
——Сообщение считывается как текст UTF-8 в точности так, как оно введено, включая пробелы и разрывы строк; завершающий перенос строки изменит результат. Вебхуки таких сервисов, как Stripe и GitHub, подписываются с помощью HMAC-SHA256 таким образом.
Проверка вебхука
Получите исходное тело запроса до любого разбора, вычислите HMAC с общим секретом и сравните его с заголовком подписи за постоянное время, чтобы по времени выполнения нельзя было определить, сколько символов совпало. Отклоняйте запросы, временная отметка которых отстоит более чем на несколько минут, чтобы предотвратить повторные атаки.
Для хеша без ключа используйте генератор хеша, а для подписанных токенов — декодер JWT.
Ключи
Ключ длиной с результат хеширования — 32 случайных байта для SHA-256 — обеспечивает полную стойкость; более длинные ключи сначала хешируются. Не храните ключи в репозиториях с исходным кодом и меняйте их, если они утекли.
Как пользоваться
- Вставьте сообщение в точности в том виде, в котором оно было отправлено, например исходное тело webhook.
- Введите секретный ключ как текст или шестнадцатеричное значение и выберите хеш-функцию.
- Сравните результат в шестнадцатеричном формате или Base64 с полученной подписью.
Конфиденциальность и ограничения
Сообщение и ключ остаются в вашем браузере — ничего никуда не отправляется.
Похожие инструменты
Часто задаваемые вопросы
Почему моя подпись не совпадает с подписью webhook?
Подписываемое сообщение должно побайтно совпадать с исходным телом: разбор и повторная сериализация JSON, а также отсутствие или добавление перевода строки изменяют его. Некоторые сервисы подписывают метку времени и тело вместе, например Stripe использует t=…,payload.
Безопасен ли HMAC-SHA1?
Для HMAC он по-прежнему считается безопасным, в отличие от SHA-1 при обычном хешировании, однако в новых системах следует использовать HMAC-SHA256.
Шестнадцатеричный формат или Base64?
Это два способа записать одни и те же байты; используйте тот, который показывает сервис. GitHub использует шестнадцатеричный формат с префиксом sha256=, а многие другие сервисы — Base64.
Бесплатный инструмент · запусков: в вашем браузере · аккаунт не нужен