HMAC-SHA1, SHA-256, SHA-384 и SHA-512 для текста или файла, а также проверка подписей
Работает в вашем браузере. Ничего из того, что вы вводите, никуда не отправляется.HMAC доказывает, что сообщение пришло от того, кто знает общий секрет; так проверяют вебхуки. Поддерживаются SHA-1, SHA-256, SHA-384 и SHA-512, для текста или файла до 200 МБ. Секрет никогда не покидает браузер, что важно для ключа подписи.
Эта страница переведена машинным способом с английского оригинала. Перевод ещё не проверен человеком, поэтому ориентируйтесь на английскую версию. Читать английский оригинал
Выберите SHA-1, SHA-256, SHA-384 или SHA-512 в разделе Алгоритм.
Введите Секретный ключ и укажите, записан ли он как Текст, Hex или Base64.
Вставьте сообщение на вкладке Текст или переключитесь на Файл и нажмите Выбрать файл.
Скопируйте результат в Hex, Base64 или Base64URL значком копирования; Ctrl+Enter копирует hex.
Этот генератор HMAC вычисляет хеш с ключом для текста или файла по SHA-1, SHA-256, SHA-384 или SHA-512 и показывает результат в hex, Base64 и Base64, безопасном для URL, прямо во время ввода. Он также проверяет: вставьте ожидаемую подпись, и он скажет, совпадает ли она.
С помощью HMAC две системы доказывают, что сообщение пришло от того, кто знает общий секрет, и не было изменено по пути. Разработчики обращаются к нему, когда вебхук платёжного провайдера не проходит проверку и нужно понять, что не так — секрет, тело или заголовок, когда пишут функцию подписи и сверяют её с известным ответом или когда в документации API приведён пример подписи, который нужно воспроизвести.
Ключ можно ввести как текст, hex или Base64, потому что провайдеры публикуют секреты во всех трёх видах. Ожидаемая подпись может быть в hex или Base64 и может сохранять префикс заголовка, например sha256= от GitHub или формат t=,v1= от Stripe. Сравнение выполняется за постоянное время — так же должен делать и ваш сервер.
Всё происходит в браузере через Web Crypto API. Ключ и сообщение никогда не загружаются, не записываются в журнал и не сохраняются, даже в этом браузере; запоминаются только выбранные алгоритм и формат ключа. Можно подписывать файлы до 200 МБ, поскольку весь файл должен одновременно находиться в памяти.
Когда проверка вебхука не проходит, обычно дело в теле: подпись покрывает точные исходные байты, и тело JSON, повторно сериализованное фреймворком, не совпадёт. Связанные инструменты: JWT Decoder, Base64 Encoder, Bcrypt Hash and Verify.
Выберите SHA-256, введите или вставьте секретный ключ, затем введите сообщение или выберите файл. Подпись сразу появится в hex и Base64; нажмите Копировать рядом с той, которую ожидает ваш API. Если ключ дан в hex или Base64, а не текстом, сначала смените формат ключа: одни и те же символы декодируются в разные байты.
Нет. HMAC вычисляется в браузере с помощью Web Crypto API, а ключ и сообщение никогда не покидают страницу. Ничего из введённого не записывается в журнал и не сохраняется, даже в локальном хранилище. На этом устройстве до следующего раза запоминаются только выбранные алгоритм и формат ключа.
Обычно тело не совпадает побайтно с тем, что подписал отправитель: фреймворк разобрал и заново сериализовал JSON, изменил окончания строк или обрезал пробелы. Подписывайте исходное тело. Другие причины — неверный секрет (тестовые и рабочие ключи различаются), секрет в hex, обработанный как текст, или сравнение hex с подписью в Base64.
Обычный хеш может вычислить кто угодно, поэтому он ничего не доказывает об авторе. HMAC подмешивает секретный ключ, так что правильное значение может получить только владелец ключа. Кроме того, он устойчив к атакам удлинения сообщения, которые ломают наивный подход — хешировать ключ, за которым следует сообщение.
Обычное сравнение строк останавливается на первом несовпадающем символе, поэтому его длительность выдаёт, какая часть угаданной подписи верна. Измеряя это на множестве запросов, злоумышленник может собрать действительную подпись байт за байтом. Этот инструмент каждый раз сравнивает все байты, и код вашего сервера должен делать так же.
Текстовые сообщения любой разумной длины и файлы до 200 МБ, потому что Web Crypto нужно всё сообщение в памяти. Поддерживаются SHA-1, SHA-256, SHA-384 и SHA-512; MD5 в Web Crypto нет, и для новых подписей его всё равно не следует использовать. Ключ должен быть длиной не менее одного байта.
Всё ещё не получается? Задайте вопрос об инструменте «Генератор HMAC» и ответить может любой, кто знает. Учётная запись не нужна.