Hash & Crypto Helpers

Генератор HMACСверяйте байты сообщения и ключа

Выберите кодировки отдельно, затем вычислите HMAC или сразу проверьте ожидаемое значение.

Генератор HMAC

Сообщение

Код HMAC

Сообщение и ключ остаются в памяти страницы, без отправки и записи в хранилище браузера.

Параметры

Без удаления пробелов и нормализации. Многострочные ключи вводите в Hex/Base64, эталон — полностью и без префикса заголовка.

Сообщение: 1 000 000 единиц UTF-16 и байтов. Ключ: 4 096 единиц UTF-16, не пустой.

Введите ключ и запустите расчёт или проверку. Сообщение может быть пустым.

Генератор HMAC помогает найти причину расхождений при проверке API или вебхука. Начните с исходных байтов сообщения и представления ключа: одинаковый на вид текст не всегда означает одинаковые данные.

По умолчанию выбран HMAC SHA256; доступны также SHA-512 и SHA-1. Секретный ключ участвует в вычислении, а код аутентификации сообщений не шифрует исходный текст.

Зачем нужен Генератор HMAC

Текст ключа и Hex различаются

Генератор HMAC декодирует ключ отдельно от сообщения. Строка 6162 в UTF-8 занимает четыре байта, а Hex 6162 задаёт два. Неверный выбор кодировки меняет ключ, даже если видимые символы остались теми же.

Два представления ключа превращаются в последовательности байтов разной длины перед обработкой одного сообщения.

Проверка без предварительного расчёта

Проверка подписи использует текущие сообщение, ключ и алгоритм. Сначала создавать результат не нужно. Ошибки формата и длины отличаются от корректного по форме значения, которое не совпадает.

Совпадающие блоки помечены галочкой; изменение одного байта сообщения приводит к другому результату и крестику.

Сначала согласуйте исходные байты

01

Сохраните исходное тело запроса

Не форматируйте JSON и не удаляйте пробелы перед расчётом. Завершающий перевод строки, BOM или другое представление Unicode могут изменить подписанные байты.

  • Если текстовое поле не сохраняет нужные байты, используйте Hex или Base64.
02

Уточните представление ключа

UTF-8 означает буквальный текст, Hex — пары шестнадцатеричных цифр, Base64 — стандартную кодировку байтов. По умолчанию ключ скрыт.

  • При вставке или перетаскивании ключа с переводами строк ввод отклоняется, прежний ключ сохраняется. Многострочный ключ сначала представьте в Hex или Base64.
03

Задайте формат эталона

Кодировки результата и ожидаемого значения независимы. Расчёт и проверка запускаются вручную; изменение ввода отключает копирование старого результата.

  • Ctrl/Cmd + Enter запускает проверку в поле эталона, а в остальных полях — расчёт. Повторное нажатие во время вычисления не запускает новый процесс.

Управление условиями подписи

Три полные длины

SHA-256 возвращает 32 байта, SHA-512 — 64, SHA-1 — 20. Алгоритм должен совпадать с требованиями протокола. SHA-1 оставлен для совместимости с существующими системами.

Раздельные кодировки

Сообщение и ключ принимают UTF-8, Hex и стандартный Base64. Результат и эталон поддерживают Hex и Base64, в том числе разные форматы. Регистр Hex не влияет на байты, а регистр Base64 влияет.

Нативная проверка

Web Crypto вычисляет и проверяет HMAC. Совпадение относится к введённым байтам и ключу. Оно не подтверждает срок действия запроса, не проверяет временную метку и не защищает от повторной отправки.

Правила ввода и ограничения

Без скрытых преобразований
Пробелы не удаляются, Unicode не нормализуется, JSON не сериализуется заново. Hex требует полных пар без префиксов и разделителей. Base64URL, пробелы, ошибочное заполнение и неканонические остаточные биты запрещены; корректно опущенное заполнение допустимо.
Пустое сообщение допустимо
Декодированный ключ не может быть пустым. Сообщение ограничено 1 000 000 единиц UTF-16 и 1 000 000 байтов после декодирования; ключ — 4 096 единицами UTF-16. Непарные суррогаты отклоняются.
Только полный код
Эталон должен содержать 20, 32 или 64 байта согласно алгоритму. Префиксы вроде sha256= удаляйте самостоятельно. Усечённые коды, файлы, загрузка URL, определение алгоритма и шаблоны сервисов не поддерживаются.
Замена с предварительным просмотром
Пример и Очистить сначала показывают количество заменяемых символов. Один шаг отмены восстанавливает ввод, настройки и результат. Предыдущий ключ остаётся в памяти страницы до следующего редактирования. Генерации ключей и хранения паролей здесь нет.

Генератор HMAC: вопросы

Мой ключ сохраняется?

Генератор HMAC не отправляет ключ на сервер и не записывает его в хранилище браузера. После очистки остаётся одна копия для отмены до следующего редактирования или выхода со страницы. JavaScript не гарантирует физическое стирание данных из памяти.

Base64 или Hex?

Это способы записать одни и те же байты. Полный SHA-256 занимает 64 символа Hex или 44 символа Base64 с заполнением. Выберите реальный формат эталона; формат вывода можно задать независимо.

Какая кодировка используется (UTF-8)?

В текстовом режиме используется UTF-8 без нормализации Unicode. Hex и Base64 сначала декодируются в байты. Браузер может менять окончания строк при вставке, поэтому для точного исходного тела лучше передать закодированные байты.

Результат не совпадает. Что проверить?

Сравните исходное тело, пробелы и переводы строк, кодировку ключа и алгоритм. Некоторые сервисы добавляют в подписываемую строку путь или временную метку. Здесь такую строку нужно подготовить самостоятельно.

Какой HMAC-алгоритм выбрать?

Тот, который указан в документации интеграции. Изначально выбран SHA-256; SHA-512 и SHA-1 доступны для соответствующих протоколов. Другой алгоритм нельзя подставлять только потому, что результат похож по длине.

Остался вопрос?

Начните с известного значения

Генератор HMAC позволяет проверить пример RFC, затем изменить один символ сообщения и увидеть несовпадение с эталоном.

Выберите кодировки отдельно, затем вычислите HMAC или сразу проверьте ожидаемое значение.