tigtools

Генератор HMAC

Обчисліть код автентифікації повідомлення на основі ключа (HMAC) для повідомлення й секретного ключа або перевірте отриманий підпис. Ключ і повідомлення залишаються у вашому браузері.

Працює у вашому браузері Без реєстрації

Ключ і повідомлення обробляються лише в цій вкладці браузера й нікуди не надсилаються. Однак не вставляйте робочі секрети на спільному або ненадійному комп’ютері.
Формат ключа

Підпис обчислюється для введеного тексту в UTF-8 без змін. Кінцевий пробіл або розрив рядка змінить результат.

Формат результату

Вставте підпис у HEX (регістр не має значення) або Base64, щоб порівняти його з результатом вище.

Як користуватися

  1. Введіть секретний ключ і виберіть його формат: звичайний текст або байти у шістнадцятковому форматі.
  2. Вставте повідомлення, наприклад дані вебхука точно в тому вигляді, у якому їх отримано.
  3. Виберіть алгоритм і формат результату, які використовує ваш сервіс. HMAC оновлюється під час введення.
  4. Щоб перевірити підпис, вставте його в поле перевірки й переконайтеся, що з’явився статус «Збіг».

Як це працює

HMAC (RFC 2104) поєднує секретний ключ із хеш-функцією, щоб створити підпис, який може сформувати лише той, хто має цей ключ. Такі сервіси, як вебхуки та запити API з підписом, надсилають HMAC разом із кожним повідомленням, щоб отримувач міг перевірити його автентичність і незмінність.

Цей інструмент використовує Web Crypto API вашого браузера (crypto.subtle.importKey і sign) та перевірений за тестовими векторами RFC 4231 і RFC 2202. Текстовий ключ і повідомлення кодуються у UTF-8. Шістнадцятковий ключ декодується в необроблені байти; пробіли, двокрапки й префікс 0x на початку ігноруються. HMAC-SHA-256 — найпоширеніший варіант; HMAC-SHA-1 досі вважається безпечним як MAC, але здебільшого використовується старішими API.

Якщо підпис не збігається, перевірте деталі, які найчастіше відрізняються: точні байти повідомлення (багато постачальників вебхуків підписують необроблене тіло, а не відформатований JSON), часову позначку або префікс, який постачальник додає до рядка для підпису, чи використовується ключ як текст, чи його потрібно спершу декодувати з hex або Base64, а також чи очікуваний підпис подано в hex або Base64 і чи має він префікс на кшталт «sha256=», який потрібно прибрати перед порівнянням.

Приклади

Тестовий приклад RFC 4231

Для ключа «Jefe» (текст), повідомлення «what do ya want for nothing?» і HMAC-SHA-256 результатом буде 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Натисніть «Спробувати приклад», щоб завантажити ці дані.

Перевірка підпису вебхука

Постачальник надсилає заголовок X-Signature: sha256=… із кожним запитом. Вставте необроблене тіло запиту як повідомлення, секрет вебхука як ключ, виберіть HMAC-SHA-256 і Hex, а потім вставте значення після «sha256=» у поле перевірки.

Ключ у шістнадцятковому форматі

Деякі системи видають ключі у вигляді шістнадцяткових рядків, наприклад 0b0b0b…. Виберіть «Шістнадцятковий» як формат ключа, щоб інструмент підписував декодованими байтами. Якщо трактувати цей самий рядок як текст, результат буде зовсім іншим.

Поширені запитання

Чим HMAC відрізняється від звичайного хешу?

Будь-хто може обчислити звичайний хеш повідомлення, наприклад SHA-256. HMAC також залежить від секретного ключа, тому створити або перевірити його може лише той, хто має ключ. Це підтверджує, що повідомлення надійшло від власника ключа й не було змінене.

Чому мій HMAC не збігається з тим, що повертає сервер?

Майже завжди відрізняються вхідні байти: переноси рядків, пробіли, порядок ключів у JSON, кодування символів або ключ, який потрібно декодувати з hex чи Base64. Також переконайтеся, що порівнюєте значення в однаковому форматі (hex чи Base64), і приберіть префікси на кшталт «sha256=».

Чи надсилається мій секретний ключ кудись?

Ні. Ключ і повідомлення використовуються лише через Web Crypto API у цій вкладці браузера. Вони не завантажуються, не зберігаються й не включаються в аналітику.

Чи безпечний досі HMAC-SHA-1?

Колізії SHA-1 не порушують роботу HMAC-SHA-1 безпосередньо, і цей алгоритм досі прийнятний для сумісності. Для нових систем використовуйте HMAC-SHA-256 або стійкіший алгоритм.

Конфіденційність

Ключ, повідомлення й результат існують лише в цій вкладці браузера. Дані не завантажуються, не зберігаються й не передаються в аналітику; фіксується лише анонімна подія про використання інструмента.