Хеши/крипто

HMAC Generator

Вычисление HMAC (Hash-based Message Authentication Code) текста или файла с секретным ключом — сразу восемью алгоритмами: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, RIPEMD-160.

HMAC (Hash-based Message Authentication Code) — это хеш, вычисленный вместе с секретным ключом, который доказывает, что сообщение не изменилось и отправлено тем, кто знает этот ключ. В отличие от обычного хеша, HMAC невозможно подделать без знания секрета.

Как пользоваться

Типичные сценарии

Что стоит помнить

HMAC защищает от подделки и подтверждает подлинность отправителя, но не шифрует само сообщение — оно остаётся читаемым.

Несовпадающий HMAC чаще всего вызван разной кодировкой данных (например, порядком полей в JSON) или лишним пробелом/переносом строки, а не ошибкой в самом алгоритме.

Статья об этом инструменте: HMAC: чем хеш с ключом отличается от обычного хеша

Часто задаваемые вопросы

Чем HMAC отличается от обычного хеша?

Обычный хеш лишь подтверждает, что данные не изменены; HMAC дополнительно использует секретный ключ, поэтому подтверждает и целостность, и то, что отправитель знал общий секрет — без ключа невозможно создать корректный HMAC, даже зная алгоритм.

Какой алгоритм хеширования выбрать для HMAC?

HMAC-SHA256 — надёжный современный вариант по умолчанию. Более старые HMAC-MD5 или HMAC-SHA1 сами по себе как HMAC ещё не взломаны, но для новых систем рекомендуют SHA-256 или сильнее.

Отправляется ли мой секретный ключ куда-либо?

Нет. HMAC вычисляется полностью в вашем браузере через Web Crypto API — ключ и сообщение никогда не покидают ваше устройство.

Почему нельзя сравнивать HMAC обычным оператором равенства?

Обычное сравнение строк останавливается на первом расхождении, и время выполнения выдаёт злоумышленнику, сколько первых символов он угадал правильно (timing attack). Нужны функции сравнения за постоянное время, например hash_equals в PHP.

Можно ли использовать один и тот же ключ для нескольких разных целей?

Не рекомендуется. Если один и тот же секретный ключ используется и для подписи вебхуков, и для другой цели, компрометация одной системы автоматически компрометирует другую — для каждого отдельного назначения стоит генерировать отдельный ключ.

Статьи: Хеши/крипто

Hash Generator: чем MD5, SHA-1 и SHA-256 отличаются друг от друга

Почему MD5 до сих пор используют для проверки целостности файлов, но не для паролей.

Checksum Verifier: как проверить, что файл не повреждён

Почему совпадение контрольной суммы подтверждает целостность файла, но не то, кто его создал.

Bcrypt: почему пароли хешируют медленно, а не быстро

Почему быстрый SHA-256 — плохая идея для паролей, а медленный bcrypt — правильная.

UUID: как генерируют идентификаторы, которые почти никогда не повторяются

Почему UUID v4 можно генерировать независимо на миллионах машин без риска коллизий.

Генератор паролей: что на самом деле делает пароль устойчивым

Почему длинный пароль из словаря надёжнее короткого с символами и цифрами.

AES: как работает симметричное шифрование

Почему один и тот же ключ шифрует и расшифровывает данные в AES, и чем это отличается от асимметричного шифрования.

Argon2: почему этот алгоритм победил в конкурсе на хеширование паролей

Чем Argon2 лучше защищает от атак на видеокартах, чем более старые алгоритмы хеширования паролей.

Scrypt: зачем алгоритму нужно много памяти

Почему scrypt намеренно требует много памяти, чтобы усложнить перебор на ASIC-устройствах.

TOTP: как работают одноразовые коды в приложениях-аутентификаторах

Почему код в Google Authenticator работает без интернета и синхронизируется с сервером только по времени.

PBKDF2: самый старый стандарт растяжения ключей

Почему рекомендуемое количество итераций PBKDF2 растёт с каждым годом.

X.509: что внутри SSL-сертификата

Что именно браузер проверяет в сертификате сайта, прежде чем показать зелёный замочек.

PGP: как работает шифрование с открытым и приватным ключом

Почему можно свободно делиться публичным ключом PGP, но не приватным.