Хеші/крипто

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, але не приватним.