Що робить інструмент
HMAC (код автентифікації повідомлення на основі хешу, RFC 2104) поєднує секретний ключ із хеш-функцією, щоб підписати повідомлення. Отримувач, який знає той самий ключ, повторно обчислює HMAC і порівнює його з надісланим. Якщо повідомлення змінили або відправник не знав ключа, значення не збігаються.
HMAC використовують усюди: підписи вебхуків (GitHub, Stripe, Slack), підписані запити до API, JWT з HS256, підпис cookie та одноразові паролі. Інструмент одночасно обчислює HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 і HMAC-SHA512, щоб ви могли звірити значення з вашою системою.
Як користуватися
- Введіть Секретний ключ. Якщо ключ задано байтами в hex або Base64, а не текстом, змініть Формат ключа.
- Вставте Повідомлення або натисніть Приклад.
- Усі HMAC оновлюються під час введення. Виберіть вивід Hex або Base64 і скопіюйте потрібне значення.
Повідомлення кодується в UTF-8 точно так, як введено, разом із пробілами та перенесеннями рядків.
Приклад
Для ключа key і повідомлення The quick brown fox jumps over the lazy dog HMAC-SHA256 дорівнює f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Перевірити можна в командному рядку:
echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"
Зверніть увагу на -n: без нього echo додасть перенесення рядка, і HMAC зміниться.
Перевірка вебхуків
Щоб перевірити вебхук, візьміть сире тіло запиту до розбору JSON, складіть рядок, описаний у документації сервісу (часто timestamp.body), обчисліть HMAC своїм секретом підпису й порівняйте із заголовком підпису. У власному коді порівнюйте підписи функцією зі сталим часом виконання, щоб уникнути атак за часом.
Часті запитання
› Чим хеш відрізняється від HMAC?
Звичайний хеш, як-от SHA-256, може обчислити будь-хто. HMAC додає до хешу секретний ключ, тож створити чи перевірити значення може лише той, хто знає ключ. Це код автентифікації повідомлення, а не просто контрольна сума.
› Який алгоритм HMAC вибрати?
Зазвичай HMAC-SHA256 — його очікує більшість API і вебхуків. HMAC-SHA512 теж підходить. HMAC-MD5 і HMAC-SHA1 поки вважаються безпечними як MAC, але використовуйте їх лише тоді, коли цього вимагає стара система.
› Чому мій HMAC не збігається із серверним?
Перевірте точні байти повідомлення (перенесення рядка в кінці чи інші пробіли в JSON змінюють усе), формат ключа (текст, hex чи Base64) і кодування виводу. Сервіси вебхуків часто підписують рядок із мітки часу та сирого тіла запиту.
› Чи зберігається або надсилається мій секретний ключ?
Ні. HMAC обчислюється у браузері. Ключ зберігається лише в пам’яті цієї сторінки: він не зберігається, не потрапляє в адресний рядок і не додається до посилань для поширення.