HMAC-SHA1, SHA-256, SHA-384 i SHA-512 z tekstu lub pliku oraz weryfikacja podpisów
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane.HMAC dowodzi, że wiadomość pochodzi od kogoś, kto zna wspólny sekret; w ten sposób weryfikuje się webhooki. Obsługiwane są SHA-1, SHA-256, SHA-384 i SHA-512, dla tekstu lub pliku do 200 MB. Sekret nigdy nie opuszcza przeglądarki, co ma znaczenie w przypadku klucza podpisującego.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wybierz SHA-1, SHA-256, SHA-384 lub SHA-512 w sekcji Algorytm.
Wpisz Tajny klucz i ustaw, czy jest zapisany jako Tekst, Hex czy Base64.
Wklej wiadomość w zakładce Tekst albo przełącz na Plik i kliknij Wybierz plik.
Skopiuj wynik Hex, Base64 lub Base64URL ikoną kopiowania; Ctrl+Enter kopiuje wartość hex.
Generator HMAC oblicza skrót z kluczem dla tekstu lub pliku przy użyciu SHA-1, SHA-256, SHA-384 lub SHA-512 i pokazuje wynik w formacie hex, Base64 oraz Base64 bezpiecznym dla URL już podczas pisania. Umożliwia też weryfikację: po wklejeniu oczekiwanego podpisu informuje, czy się zgadza.
HMAC pozwala dwóm systemom udowodnić, że wiadomość pochodzi od kogoś, kto zna wspólny sekret, i nie została zmieniona po drodze. Programiści sięgają po niego, gdy webhook operatora płatności nie przechodzi weryfikacji i trzeba ustalić, czy błąd tkwi w sekrecie, treści czy nagłówku, gdy piszą funkcję podpisującą i sprawdzają ją ze znanym wynikiem albo gdy dokumentacja API pokazuje przykładowy podpis do odtworzenia.
Klucz można wpisać jako tekst, hex lub Base64, ponieważ dostawcy publikują sekrety we wszystkich trzech formach. Oczekiwany podpis może być w hex lub Base64 i może zachować prefiks nagłówka, na przykład sha256= z GitHuba lub format t=,v1= ze Stripe. Porównanie odbywa się w stałym czasie, tak jak powinien to robić również serwer.
Wszystko dzieje się w przeglądarce za pomocą Web Crypto API. Klucz i wiadomość nigdy nie są przesyłane, logowane ani zapisywane, nawet w tej przeglądarce; zapamiętywane są tylko wybrany algorytm i format klucza. Można podpisywać pliki do 200 MB, ponieważ cały plik musi naraz zmieścić się w pamięci.
Gdy weryfikacja webhooka się nie udaje, zwykle winna jest treść: podpis obejmuje dokładne surowe bajty, a treść JSON ponownie zserializowana przez framework nie będzie pasować. Powiązane narzędzia: JWT Decoder, Base64 Encoder, Bcrypt Hash and Verify.
Wybierz SHA-256, wpisz lub wklej tajny klucz, a następnie wpisz wiadomość albo wybierz plik. Podpis pojawia się od razu w hex i Base64; kliknij Kopiuj obok tego, którego oczekuje API. Jeśli klucz podano w hex lub Base64 zamiast tekstu, najpierw zmień format klucza, bo te same znaki dekodują się na inne bajty.
Nie. HMAC jest obliczany w przeglądarce przez Web Crypto API, a klucz i wiadomość nigdy nie opuszczają strony. Nic z wpisanych danych nie jest logowane ani zapisywane, nawet w pamięci lokalnej. Na tym urządzeniu zapamiętywane są na następny raz tylko wybrany algorytm i format klucza.
Zwykle treść nie jest bajt w bajt tym, co podpisał nadawca: framework sparsował i ponownie zserializował JSON, zmienił znaki końca linii lub usunął białe znaki. Należy podpisywać surową treść. Inne przyczyny to zły sekret (klucze testowe i produkcyjne się różnią), potraktowanie sekretu w hex jak tekstu albo porównywanie hex z podpisem w Base64.
Zwykły skrót może obliczyć każdy, więc nie dowodzi niczego o autorze. HMAC miesza do niego tajny klucz, więc poprawną wartość może wytworzyć tylko ktoś, kto ma klucz. Jest też odporny na ataki przedłużenia długości, które łamią naiwne podejście polegające na haszowaniu klucza, a po nim wiadomości.
Zwykłe porównanie ciągów zatrzymuje się na pierwszym różniącym się znaku, więc czas jego trwania zdradza, jaka część zgadywanego podpisu była poprawna. Mierząc to w wielu żądaniach, atakujący może zbudować prawidłowy podpis bajt po bajcie. To narzędzie za każdym razem porównuje wszystkie bajty i kod serwera powinien robić to samo.
Wiadomości tekstowe o dowolnej praktycznej długości i pliki do 200 MB, ponieważ Web Crypto potrzebuje całej wiadomości w pamięci. Obsługiwane są SHA-1, SHA-256, SHA-384 i SHA-512; MD5 nie jest dostępny w Web Crypto i i tak nie powinien być używany do nowych podpisów. Klucz musi mieć co najmniej jeden bajt.
Nadal coś nie działa? Zapytaj o narzędzie Generator HMAC a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.