Narzędzie dla programistów

Generator HMAC

Podpisz wiadomość tajnym kluczem. Nic nie jest przesyłane.

Generator HMAC Działa na twoim urządzeniu
  • Działa w przeglądarce — twój tekst nigdy nie jest nigdzie wysyłany
  • Bez rejestracji, bez limitów, za darmo, tak często, jak chcesz

Jak to działa

HMAC dowodzi dwóch rzeczy naraz: że wiadomość nie została zmieniona i że ten, kto go wygenerował, zna wspólny sekret. To właśnie nim podpisuje się webhooki, żądania API i linki do pobierania w większości internetu.

Inaczej niż zwykły skrót, w sposób, który ma znaczenie

Każdy może obliczyć SHA-256 wiadomości, więc sam skrót niczego nie dowodzi co do autora — zmień wiadomość, oblicz skrót ponownie i nikt nie zauważy różnicy. HMAC wplata w obliczenia tajny klucz, więc nie da się go obliczyć ponownie bez klucza. O to właśnie chodzi i dlatego podpisy webhooków używają HMAC, a nie zwykłego skrótu.

Bezpieczna weryfikacja

Gdy sprawdzasz HMAC na serwerze, porównuj go funkcją działającą w stałym czasie — crypto.timingSafeEqual w Node, hash_equals w PHP. Zwykłe == kończy działanie, gdy tylko dwa bajty się różnią, a czas, jaki to zajmuje, zdradza, jaka część podpisu była poprawna, co przy odrobinie cierpliwości wystarcza do sfałszowania podpisu. To realny atak, a nie teoretyczny.

Który algorytm

SHA-256, chyba że coś określa inaczej. SHA-1 jest uwzględniony, bo wiele starszych API nadal wymaga HMAC-SHA-1, a HMAC-SHA-1 nie został złamany tak jak zwykły SHA-1 — ale nie ma powodu, by wybierać go do czegokolwiek nowego.

Hex czy Base64

To wyłącznie kwestia tego, czego oczekuje druga strona. Hex jest dwa razy dłuższy i łatwiejszy do odczytania; Base64 jest bardziej zwarty i częsty w nagłówkach HTTP. Ten sam podpis jest pokazany w obu postaciach.

Twój klucz zostaje tutaj

Generowane za pomocą wbudowanego w przeglądarkę Web Crypto API. Klucz i wiadomość nigdy nie są nigdzie wysyłane, a to jedyny odpowiedzialny sposób oferowania takiego narzędzia — narzędzie do podpisywania, które przesyła twój sekret, oddaje to, co ten sekret chroni.

FAQ

Generator HMAC — pytania

Czym HMAC różni się od skrótu?

Skrót może obliczyć każdy. HMAC wymaga tajnego klucza, więc dowodzi, kto go wygenerował.

Którego algorytmu użyć?

SHA-256, chyba że API określa inaczej. SHA-1 jest dostępny dla starszych systemów, które nadal go wymagają.

Wybrać hex czy Base64?

To, czego oczekuje druga strona. Ten sam podpis jest pokazany w obu postaciach.

Dlaczego porównanie musi trwać stały czas?

Zwykłe porównanie kończy się przy pierwszej różnicy, a różnica w czasie zdradza, ile było poprawne — to wystarczy, by sfałszować podpis.

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

Nie. Wszystko działa w twojej przeglądarce dzięki Web Crypto API.