Хеши/крипто

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) is a hash computed together with a secret key, proving a message hasn't changed and was sent by someone who knows that key. Unlike a plain hash, an HMAC can't be forged without knowing the secret.

How to use it

Common uses

Things to keep in mind

HMAC protects against tampering and confirms the sender's authenticity, but it doesn't encrypt the message itself — the content stays readable.

A mismatched HMAC is most often caused by different data encoding (e.g. JSON field order) or a stray whitespace or line break, not by a bug in the algorithm itself.

Статья об этом инструменте: 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, но не приватным.