tigtools

Generator HMAC

Oblicz kod uwierzytelniający wiadomość (HMAC) na podstawie wiadomości i tajnego klucza albo sprawdź otrzymany podpis. Klucz i wiadomość pozostają w Twojej przeglądarce.

Działa w przeglądarce Bez rejestracji

Klucz i wiadomość są przetwarzane tylko na tej karcie przeglądarki i nigdy nie są nigdzie wysyłane. Mimo to unikaj wklejania aktywnych sekretów produkcyjnych na współdzielonym lub niezaufanym komputerze.
Format klucza

Podpis jest tworzony z tekstu UTF-8 dokładnie w takiej postaci, w jakiej go wpisano. Spację na końcu lub znak nowej linii zmienia wynik.

Format wyniku

Wklej podpis w formacie hex (wielkość liter nie ma znaczenia) lub Base64, aby porównać go z powyższym wynikiem.

Jak używać

  1. Wprowadź tajny klucz i wybierz, czy jest zapisany jako zwykły tekst, czy bajty hex.
  2. Wklej wiadomość, na przykład treść webhooka dokładnie w otrzymanej postaci.
  3. Wybierz algorytm i kodowanie wyniku używane przez Twoją usługę. HMAC jest aktualizowany podczas pisania.
  4. Aby sprawdzić podpis, wklej go w polu weryfikacji i sprawdź, czy pojawi się komunikat „Zgodność”.

Jak to działa

HMAC (RFC 2104) łączy tajny klucz z funkcją skrótu, tworząc podpis, który może wygenerować tylko osoba posiadająca ten klucz. Usługi takie jak webhooki i podpisane żądania API dołączają HMAC do każdej wiadomości, aby odbiorca mógł sprawdzić, czy wiadomość jest autentyczna i niezmieniona.

To narzędzie korzysta z Web Crypto API przeglądarki (crypto.subtle.importKey i sign) i zostało sprawdzone przy użyciu wektorów testowych RFC 4231 i RFC 2202. Klucz tekstowy i wiadomość są kodowane jako UTF-8. Klucz szesnastkowy jest dekodowany do surowych bajtów; spacje, dwukropki i początkowe 0x są pomijane. HMAC-SHA-256 jest najczęściej wybieranym algorytmem; HMAC-SHA-1 nadal uznaje się za bezpieczny jako MAC, ale jest używany głównie przez starsze API.

Jeśli podpis się nie zgadza, sprawdź najczęstsze przyczyny: dokładne bajty wiadomości (wielu dostawców webhooków podpisuje surową treść, a nie ponownie sformatowany JSON), znacznik czasu lub prefiks dodawany przez dostawcę do podpisywanego ciągu, to, czy klucz jest używany jako tekst, czy należy go najpierw zdekodować z formatu szesnastkowego lub Base64, oraz to, czy oczekiwany podpis jest w formacie szesnastkowym czy Base64 i zawiera prefiks, taki jak „sha256=”, który należy usunąć przed porównaniem.

Przykłady

Przypadek testowy RFC 4231

Klucz „Jefe” (tekst), wiadomość „what do ya want for nothing?” i HMAC-SHA-256 dają wynik 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Użyj opcji „Wypróbuj przykład”, aby wczytać dane.

Weryfikowanie podpisu webhooka

Dostawca wysyła z każdym żądaniem nagłówek X-Signature: sha256=…. Wklej surową treść żądania jako wiadomość, sekret webhooka jako klucz, wybierz HMAC-SHA-256 i format szesnastkowy, a następnie wklej wartość po „sha256=” w polu weryfikacji.

Klucz zapisany w formacie szesnastkowym

Niektóre systemy udostępniają klucze jako ciągi szesnastkowe, np. 0b0b0b…. Wybierz format szesnastkowy klucza, aby narzędzie podpisało dane zdekodowanymi bajtami; potraktowanie tego samego ciągu jako tekstu daje zupełnie inny wynik.

Często zadawane pytania

Czym HMAC różni się od zwykłego hasha?

Każdy może obliczyć zwykły hash, np. SHA-256, wiadomości. HMAC zależy również od tajnego klucza, więc może go wygenerować lub zweryfikować tylko osoba posiadająca ten klucz. Dzięki temu można potwierdzić, że wiadomość pochodzi od osoby znającej klucz i nie została zmieniona.

Dlaczego mój HMAC nie zgadza się z wynikiem serwera?

Najczęściej nie zgadzają się bajty danych wejściowych: zakończenia linii, białe znaki, kolejność kluczy JSON, kodowanie znaków albo klucz, który należy zdekodować z formatu szesnastkowego lub Base64. Sprawdź też, czy porównujesz dane w tym samym formacie (szesnastkowym lub Base64), i usuń prefiksy, takie jak „sha256=”.

Czy mój tajny klucz jest gdzieś wysyłany?

Nie. Klucz i wiadomość są używane wyłącznie przez Web Crypto API w tej karcie przeglądarki. Nie są przesyłane, zapisywane ani uwzględniane w danych analitycznych.

Czy HMAC-SHA-1 jest nadal bezpieczny?

Kolizje SHA-1 nie naruszają bezpośrednio bezpieczeństwa HMAC-SHA-1, który nadal jest akceptowany ze względu na zgodność. W nowych systemach używaj HMAC-SHA-256 lub silniejszego algorytmu.

Prywatność

Klucz, wiadomość i wynik są dostępne tylko na tej karcie przeglądarki. Żadne dane nie są przesyłane, zapisywane ani wysyłane do narzędzi analitycznych; rejestrowane jest tylko anonimowe zdarzenie informujące o użyciu narzędzia.