Skip to content

Generator HMAC i weryfikator podpisów

Darmowy generator i weryfikator HMAC online. Oblicz HMAC-SHA256/SHA1/SHA384/SHA512 z kluczem Tekst, Hex lub Base64 i wynikiem Hex/Base64/Base64URL. 100% w Twojej przeglądarce — klucze nigdy nie opuszczają strony.

Bez śledzenia Działa w przeglądarce Bezpłatne
100% w Twojej przeglądarce — Twoja wiadomość i tajny klucz nigdy nie opuszczają urządzenia.
Wygenerowany HMAC

Czym jest HMAC?

HMAC (Hash-based Message Authentication Code) to krótki tag o stałej długości, który dowodzi, że wiadomość jest zarówno niezmodyfikowana, jak i autentyczna — że została wytworzona przez kogoś, kto trzyma współdzielony tajny klucz. Zdefiniowany w RFC 2104 i FIPS 198-1, HMAC łączy dowolną kryptograficzną funkcję skrótu z tajnym kluczem w konkretnej zagnieżdżonej konstrukcji, zapisanej jako HMAC(K, m) = H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)). Wewnętrzny skrót wiąże klucz z wiadomością; zewnętrzny skrót opakowuje wynik, co właśnie czyni HMAC odpornym na ataki length-extension dotykające surowe funkcje SHA-1 i SHA-256.

HMAC jest wszędzie w nowoczesnej infrastrukturze webowej. Podpisuje webhooki, dzięki czemu możesz potwierdzić, że przychodzące żądanie naprawdę pochodzi od GitHuba, Stripe, Slacka czy Twilio i nie zostało sfałszowane. Podpisuje żądania API (AWS Signature Version 4 jest zbudowany na HMAC-SHA256), dzięki czemu serwer może uwierzytelnić wywołującego bez przesyłania hasła przez sieć. To S w HS256: JWT podpisany za pomocą HS256 niesie HMAC-SHA256 nad swoim nagłówkiem i ładunkiem, który możesz obejrzeć w koderze JWT. Stanowi też podstawę wyprowadzania kluczy TLS (HKDF), algorytmów haseł jednorazowych (HOTP/TOTP) i integralności wiadomości w niezliczonych usługach wewnętrznych.

To narzędzie oblicza HMAC w całości w Twojej przeglądarce, używając crypto.subtle.sign('HMAC', ...) z Web Crypto API — tego samego prymitywu, którego przeglądarki używają podczas uzgadniania TLS. Twój tajny klucz i wiadomość nigdy nie są przesyłane, więc jest bezpieczne dla produkcyjnych sekretów podpisujących. Ponieważ ten sam sekret można wyrazić jako surowy tekst, hex lub base64, narzędzie pozwala jawnie wybrać Kodowanie klucza, a ponieważ różni dostawcy oczekują tagu w różnych formach, możesz wygenerować Hex, Base64 lub Base64URL. Zakładka Weryfikuj pozwala sprawdzić podpis, który otrzymałeś, używając porównania w czasie stałym, dzięki czemu samo sprawdzenie nie wycieka informacji o czasie.

const crypto = require('crypto');

// HMAC-SHA256 with a UTF-8 text key, hex output
const hmac = crypto
  .createHmac('sha256', 'my-secret-key')
  .update('Hello, World!')
  .digest('hex');

console.log(hmac);
// → 'cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699'

// Verify a signature in constant time
function verify(message, key, expectedHex) {
  const actual = crypto.createHmac('sha256', key).update(message).digest();
  const expected = Buffer.from(expectedHex, 'hex');
  return actual.length === expected.length &&
    crypto.timingSafeEqual(actual, expected);
}

Kluczowe funkcje

Generowanie i weryfikacja w jednym narzędziu

Wygeneruj podpis w zakładce Generuj albo wklej Oczekiwany HMAC w zakładce Weryfikuj, aby uwierzytelnić przychodzący webhook lub token. Weryfikacja używa porównania w czasie stałym, więc wynik nigdy nie wycieka informacji o czasie.

Wybierz kodowanie klucza

Interpretuj swój sekret jako Tekst (UTF-8), Szesnastkowy lub Base64. To ustawienie, które większość innych narzędzi pomija — i najczęstszy powód, dla którego dwa systemy obliczają różne HMAC dla tego samego klucza.

Trzy kodowania wyjścia

Wypisz tag jako Hex (webhooki GitHuba, AWS), Base64 (Stripe, Twilio, wiele API) lub Base64URL (JWT i tokeny bezpieczne dla URL), aby pasował do Twojej integracji bez ręcznej konwersji.

Cztery natywne algorytmy

HMAC-SHA256 domyślnie, plus SHA-1, SHA-384 i SHA-512. Wszystkie działają na Web Crypto API przeglądarki, więc nie ma biblioteki kryptograficznej JavaScript, której trzeba ufać, ani straty wydajności.

100% po stronie klienta i prywatnie

Twój tajny klucz i wiadomość są przetwarzane w całości w przeglądarce i nigdy nie są wysyłane na żaden serwer. Otwórz zakładkę Network, a zobaczysz zero wychodzących żądań — bezpieczne dla produkcyjnych sekretów podpisujących.

Obliczenia na żywo

HMAC przelicza się natychmiast podczas edycji wiadomości, klucza, kodowania lub algorytmu — bez podróży w obie strony przyciskiem Generuj, więc możesz eksperymentować z kodowaniami, aż Twoja wartość zgadza się z wartością serwera.

Zbudowane na przetestowanych wektorach

Wynik jest walidowany względem oficjalnych wektorów testowych HMAC z RFC 4231, więc możesz ufać, że skróty pasują do tych produkowanych przez OpenSSL, moduł crypto Node i bibliotekę hmac Pythona.

Przykłady HMAC

Szybki start — HMAC-SHA256, wynik hex

Hello, World!
cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699

Z kluczem „my-secret-key” (Kodowanie klucza = Tekst), algorytmem HMAC-SHA256 i Formatem wyjścia = Hex wiadomość „Hello, World!” daje cf3141611e22ea26a9cac6fe41d941274dd6653622c83cba13972d177bd69699. To kanoniczny 64-znakowy skrót hex, który otrzymujesz z crypto.createHmac('sha256', key).update(msg).digest('hex') w Node.

Weryfikacja webhooka w stylu Stripe (wynik Base64)

{"id":42,"event":"user.created"}
Cd2f7zTKaJFeG6k+t1FcvDPn51OAZ2f4GrxkCUgMhGs=

Wielu dostawców webhooków wysyła podpis jako Base64. Z kluczem „whsec_test_secret” (Tekst), HMAC-SHA256 i Formatem wyjścia = Base64 to ciało JSON podpisuje się jako Cd2f7zTKaJFeG6k+t1FcvDPn51OAZ2f4GrxkCUgMhGs=. Wklej tę wartość w zakładce Weryfikuj, aby potwierdzić, że żądanie naprawdę pochodzi od Twojego dostawcy, zanim je przetworzysz. Wewnętrznie HMAC działa na tym samym prymitywie co nasz generator skrótów SHA-256, ale z kluczem opartym na Twoim sekrecie.

Wektor referencyjny RFC 4231

what do ya want for nothing?
5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

To przypadek testowy 2 z RFC 4231, oficjalnego dokumentu wektorów testowych HMAC. Z kluczem „Jefe” (Tekst), HMAC-SHA256, wynikiem Hex wiadomość „what do ya want for nothing?” daje 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Dopasowanie dokładnie tej wartości to sposób na udowodnienie, że implementacja HMAC jest poprawna.

HMAC-SHA512 dla dłuższego skrótu

The quick brown fox
36f44b125a8a90639dc46733039571792e081e0fd8685ff746784b02ed14aa35629d562c7117cde4a701570551faa5a5e1b7ef1eb5c3bcd4cc1fdb8923fcf14e

Przełącz algorytm na HMAC-SHA512, aby uzyskać 128-znakowy (512-bitowy) skrót. Z kluczem „key” (Tekst) i wynikiem Hex „The quick brown fox” daje powyższą wartość. SHA-512 jest na większości sprzętu 64-bitowego szybsze niż SHA-256 i daje większy wynik, choć SHA-256 pozostaje domyślnym wyborem dla interoperacyjności.

Jak wygenerować i zweryfikować HMAC

  1. 1

    Wybierz algorytm

    Wybierz HMAC-SHA256 (domyślny i właściwy wybór niemal do wszystkich webhooków, API i JWT) albo przełącz na SHA-1, SHA-384 lub SHA-512, aby dopasować się do systemu, który tego wymaga. Wszystkie cztery działają natywnie w Twojej przeglądarce przez Web Crypto API.

  2. 2

    Wpisz tajny klucz i ustaw jego kodowanie

    Wpisz lub wklej swój tajny klucz, a następnie ustaw Kodowanie klucza tak, aby pasowało do sposobu, w jaki serwer go interpretuje: Tekst (UTF-8) dla zwykłego ciągu, Hex dla bloba szesnastkowego lub Base64 dla sekretu base64. Pomyłka tutaj to główna przyczyna niezgodności HMAC, więc w razie wątpliwości wypróbuj wszystkie trzy.

  3. 3

    Wpisz wiadomość

    Wklej dokładnie te bajty, które chcesz podpisać — w przypadku webhooka jest to surowe ciało żądania, bajt po bajcie, bez ponownej serializacji ani zmian białych znaków. HMAC przelicza się na żywo podczas edycji, a nic nie jest wysyłane na serwer.

  4. 4

    Wybierz format wyjścia i skopiuj

    Wybierz Hex (styl GitHuba), Base64 (styl Stripe/AWS) lub Base64URL (styl JWT), aby pasował do tego, czego oczekuje Twoja integracja, a następnie kliknij Kopiuj, aby pobrać podpis.

  5. 5

    Zweryfikuj istniejący podpis

    Przejdź do zakładki Weryfikuj, wklej Oczekiwany HMAC z nagłówka lub tokena, a narzędzie potwierdzi w czasie stałym, czy obliczony przez Ciebie podpis pasuje — dzięki czemu możesz uwierzytelnić ładunek, zanim na nim zadziałasz.

Częste błędy w HMAC

Niezgodność kodowania klucza (przyczyna niezgodności #1)

Ten sam sekret można odczytać jako surowy tekst UTF-8, jako hex lub jako base64 — a każda interpretacja produkuje zupełnie inne bajty klucza, więc HMAC nie będzie pasował, jeśli Twoje narzędzie i serwer się nie zgadzają. Jeśli dostawca daje Ci sekret w hex lub base64, musisz zdekodować go do bajtów przed podpisaniem, a nie podpisywać ciąg jako taki. Gdy podpis nie przejdzie weryfikacji, najpierw wypróbuj klucz we wszystkich trzech opcjach Kodowania klucza.

✗ Niepoprawne
// Server stored a base64 secret but you sign the literal string
createHmac('sha256', 'c2VjcmV0LWtleQ==').update(msg)
✓ Poprawne
// Decode the base64 secret to raw bytes first
createHmac('sha256', Buffer.from('c2VjcmV0LWtleQ==', 'base64')).update(msg)

Niezgodność kodowania wyjścia

HMAC to surowe bajty; hex, base64 i base64url to tylko różne kodowania tekstowe tej samej wartości. Jeśli serwer wysyła podpis base64, a Ty porównujesz go ze swoim skrótem hex, nigdy nie będą pasować, mimo że bazowe bajty są identyczne. Dopasuj Format wyjścia do tego, czego używa nagłówek lub token.

✗ Niepoprawne
// Provider sends base64, you compare hex
expected = 'Cd2f7z...=' // base64
actual   = digest('hex') // hex — never matches
✓ Poprawne
// Produce the same encoding the provider uses
actual = digest('base64')

Podpisywanie ponownie zserializowanego JSON zamiast surowego ciała

Podpisy webhooków pokrywają dokładnie te bajty, które wysłał dostawca. Jeśli sparsujesz JSON i ponownie go zserializujesz, kolejność kluczy, odstępy i format liczb mogą się zmienić, zmieniając bajty i psując podpis. Zawsze podpisuj HMAC-iem surowe ciało żądania przechwycone przed jakimkolwiek parsowaniem.

✗ Niepoprawne
// Re-serialization changes the bytes
body = JSON.stringify(JSON.parse(rawBody))
verify(hmac(body))
✓ Poprawne
// Sign the raw bytes exactly as received
verify(hmac(rawBody))

Użycie == zamiast porównania w czasie stałym

Porównywanie odebranego podpisu za pomocą == lub prostej równości ciągów wycieka informację o czasie, bo porównanie zatrzymuje się na pierwszym różniącym się bajcie. Przez wiele prób napastnik może odtworzyć poprawny tag. Przy weryfikacji zawsze używaj sprawdzania równości w czasie stałym.

✗ Niepoprawne
if (received === computed) { /* trust */ }
✓ Poprawne
if (crypto.timingSafeEqual(receivedBuf, computedBuf)) { /* trust */ }

Do czego służy HMAC

Weryfikuj podpisy webhooków
Dostawcy tacy jak GitHub, Stripe, Slack i Twilio podpisują każdy webhook za pomocą HMAC nad ciałem żądania i sekretem, który dzielisz tylko Ty. Przelicz tag i porównaj go z nagłówkiem (na przykład X-Hub-Signature-256), aby potwierdzić, że zdarzenie jest prawdziwe, zanim na nim zadziałasz. Użyj zakładki Weryfikuj, aby zrobić to bez pisania jednorazowego kodu.
Podpisuj żądania API
Uwierzytelnione API często wymagają, by klient podpisał żądanie za pomocą HMAC (metoda, ścieżka, znacznik czasu, ciało) współdzielonym sekretem, zamiast wysyłać sam sekret. AWS Signature Version 4 to kanoniczny przykład. To narzędzie pozwala odtworzyć i debugować te podpisy krok po kroku.
Zagwarantuj integralność wiadomości
Gdy przekazujesz token, ciasteczko lub wiadomość między usługami, dołączenie HMAC pozwala odbiorcy wykryć każdą manipulację. Ponieważ tag zależy od sekretu, napastnik nie może go przeliczyć po zmodyfikowaniu danych — w przeciwieństwie do zwykłej sumy kontrolnej.
Zrozum podpisywanie JWT HS256
JWT podpisany za pomocą HS256 to po prostu base64url(header) + '.' + base64url(payload), podpisany za pomocą HMAC-SHA256, a wynik emitowany jako Base64URL. Ustaw tutaj algorytm na SHA-256, a wyjście na Base64URL, aby zobaczyć dokładnie, jak powstaje ten podpis, a potem sprawdź to krzyżowo w koderze JWT.
Debuguj niezgodny podpis
Gdy Twój HMAC nie chce pasować do serwera, to narzędzie jest najszybszym sposobem na wyizolowanie przyczyny: wypróbuj klucz jako Tekst, Hex i Base64, przełącz wyjście między Hex a Base64 i upewnij się, że podpisujesz dokładnie te surowe bajty — wszystko bez ponownego wdrażania kodu.

Jak działa HMAC

Konstrukcja RFC 2104
HMAC jest zdefiniowany jako H((K ⊕ opad) ‖ H((K ⊕ ipad) ‖ m)), gdzie ipad to powtarzany bajt 0x36, a opad to powtarzany 0x5c, oba do rozmiaru bloku skrótu. Klucz dłuższy niż rozmiar bloku jest najpierw haszowany; krótszy jest dopełniany zerami. To dwuprzebiegowe zagnieżdżenie daje HMAC jego dowód bezpieczeństwa, który obowiązuje nawet wtedy, gdy bazowy skrót nie jest odporny na kolizje.
Dlaczego skrót z kluczem bije zwykły skrót
Zwykły skrót dowodzi tylko, że dane nie zostały przypadkowo uszkodzone, bo każdy może go przeliczyć dla dowolnej wiadomości — także zmodyfikowanej. HMAC dodaje sekret, więc tylko posiadacze klucza mogą wytworzyć poprawny tag. To zamienia samą integralność w integralność plus autentyczność, czyli właściwość, której naprawdę potrzebują webhooki i podpisane żądania.
Odporność na length-extension
Nagie SHA-1, SHA-256 i SHA-512 to skróty Merkle–Damgård podatne na length-extension: mając H(secret ‖ msg), napastnik może obliczyć H(secret ‖ msg ‖ extra) bez znajomości sekretu. Naiwne schematy „MAC z prefiksem sekretu” są przez to łamane. Zewnętrzny skrót HMAC neutralizuje ten atak, co jest głównym powodem, by używać HMAC zamiast haszowania sekretu i wiadomości razem.
Wybór między SHA-256 a SHA-512
HMAC-SHA256 produkuje 256-bitowy tag (64 znaki hex) i jest domyślnym wyborem dla interoperacyjności — szybki, wszechobecny i obsługiwany wszędzie. HMAC-SHA512 produkuje 512-bitowy tag (128 znaków hex) i często jest szybszy na 64-bitowych CPU, bo SHA-512 używa 64-bitowych słów. Wybierz SHA-256, chyba że specyfikacja lub system partnerski wymaga SHA-512; oba są bezpieczne do uwierzytelniania.
Implementacja Web Crypto
To narzędzie wywołuje crypto.subtle.importKey, aby załadować Twój klucz (zdekodowany z Tekst, Hex lub Base64), oraz crypto.subtle.sign('HMAC', ...), aby obliczyć tag, a następnie koduje surowe bajty jako Hex, Base64 lub Base64URL. To ta sama natywna, zaudytowana implementacja, której przeglądarka używa do TLS, działająca poza silnikiem JavaScript dla szybkości.

Najlepsze praktyki HMAC

Użyj klucza co najmniej tak długiego jak wyjście skrótu
Dla HMAC-SHA256 użyj sekretu o długości co najmniej 32 losowych bajtów (256 bitów); dla SHA-512 użyj 64. Krótki lub niskoentropijny klucz to najsłabsze ogniwo. Generuj klucze z kryptograficznie bezpiecznego źródła losowości — nigdy z hasła ani przewidywalnego ciągu.
Zawsze porównuj tagi w czasie stałym
Weryfikuj podpisy porównaniem w czasie stałym (crypto.timingSafeEqual w Node, hmac.compare_digest w Pythonie) zamiast == lub równości ciągów. Naiwne porównanie kończy się wcześnie na pierwszym różniącym się bajcie, wyciekając czas, który może pozwolić napastnikowi odtworzyć poprawny tag bajt po bajcie. Zakładka Weryfikuj tego narzędzia już porównuje w czasie stałym.
Nigdy nie loguj ani nie ujawniaj tajnego klucza
Trzymaj sekrety podpisujące z dala od logów, komunikatów o błędach, URL-i i kodu po stronie klienta. Przechowuj je w menedżerze sekretów lub zmiennych środowiskowych, rotuj okresowo i ogranicz każdą integrację do własnego klucza, aby jeden wyciek nie skompromitował wszystkiego.
Preferuj HMAC-SHA256 lub mocniejszy
Domyślnie wybieraj HMAC-SHA256; przejdź na SHA-384 lub SHA-512, gdy partner tego wymaga. Unikaj HMAC-SHA1 w nowych systemach i nigdy nie używaj HMAC-MD5. Choć HMAC lepiej toleruje słabszy skrót niż surowy podpis, start od nowoczesnego skrótu daje Ci największy margines.
Podpisuj dokładnie te bajty, włącznie ze znacznikiem czasu
Podpisuj surowy, niezmodyfikowany ładunek — ponowna serializacja JSON lub przycinanie białych znaków zmienia bajty i psuje weryfikację. Przy podpisywaniu żądań włącz znacznik czasu lub nonce do podpisanych danych i odrzucaj nieaktualne podpisy, aby zapobiec atakom powtórzeniowym.

FAQ o HMAC

Czym jest HMAC?
HMAC (Hash-based Message Authentication Code) to sposób na udowodnienie zarówno integralności, jak i autentyczności wiadomości za pomocą współdzielonego tajnego klucza. Podajesz wiadomość i tajny klucz do funkcji skrótu (tutaj SHA-1, SHA-256, SHA-384 lub SHA-512) w konkretnej zagnieżdżonej konstrukcji zdefiniowanej w RFC 2104 i otrzymujesz tag o stałej długości. Każdy, kto zna sekret, może ponownie obliczyć tag i potwierdzić, że wiadomość nie została zmieniona i pochodzi od kogoś, kto trzyma klucz. To standardowy mechanizm stojący za podpisami webhooków, podpisanymi żądaniami API i rodziną HS256 tokenów JWT.
Czym HMAC różni się od zwykłego skrótu, takiego jak SHA-256?
Zwykły skrót, taki jak SHA-256, dowodzi tylko integralności: każdy może go ponownie obliczyć, więc każdy może też sfałszować pasujący skrót dla zmodyfikowanej wiadomości. HMAC dodaje tajny klucz, więc tylko strony posiadające ten klucz mogą wytworzyć lub zweryfikować poprawny tag — to dodaje autentyczność na szczyt integralności. HMAC używa też zagnieżdżonej dwuprzebiegowej konstrukcji (wewnętrzne i zewnętrzne haszowanie z padami pochodzącymi z klucza), która czyni go odpornym na ataki length-extension dotykające surowe SHA-1 i SHA-256. Krótko mówiąc: użyj skrótu, aby wykryć przypadkowe uszkodzenie, użyj HMAC, aby wykryć celowe manipulacje napastnika, który nie zna Twojego klucza.
Jak zweryfikować podpis przychodzącego webhooka?
Weź surowe ciało żądania dokładnie tak, jak je odebrano (nie serializuj ponownie JSON — nawet zmiana kolejności kluczy psuje podpis), wybierz ten sam algorytm, którego używa Twój dostawca (zwykle HMAC-SHA256), wpisz sekret podpisujący z poprawnym Kodowaniem klucza i ustaw Format wyjścia tak, aby pasował do nagłówka (Hex dla prefiksu sha256= GitHuba, Base64 dla nagłówków w stylu Stripe/Twilio). Następnie otwórz zakładkę Weryfikuj, wklej podpis z nagłówka (taki jak X-Hub-Signature-256), a narzędzie zgłosi zgodność lub niezgodność, używając porównania w czasie stałym. Zaufaj ładunkowi tylko wtedy, gdy pasuje.
Jakiego kodowania klucza i wyjścia używa mój serwer?
Nie ma uniwersalnej odpowiedzi — zależy to od Twojego dostawcy, i właśnie dlatego to narzędzie udostępnia oba jako jawne opcje. Typowe wzorce: GitHub używa tekstowego sekretu UTF-8 i wyniku hex małymi literami z prefiksem sha256=; Stripe używa tekstowego sekretu i base64; AWS Signature V4 używa pochodnych kluczy binarnych i hex; wiele systemów wewnętrznych wydaje sekrety base64 lub hex, które trzeba zdekodować do surowych bajtów przed podpisaniem. Jeśli Twój HMAC nie pasuje, prawie zawsze winne jest kodowanie — wypróbuj ten sam klucz w Tekst, Hex i Base64, aby znaleźć interpretację, której oczekuje serwer.
Czy HMAC-SHA256 jest bezpieczny?
Tak. HMAC-SHA256 jest powszechnie uważany za bezpieczny i jest zalecanym domyślnym wyborem do uwierzytelniania wiadomości. Jego bezpieczeństwo wynika z konstrukcji HMAC oraz silnej funkcji skrótu i pozostaje bezpieczny, mimo że istnieją ataki kolizyjne na nagi skrót — HMAC nie polega na odporności na kolizje tak jak podpis cyfrowy. Realne ryzyka są operacyjne, a nie algorytmiczne: słaby lub wyciekły tajny klucz, logowanie klucza albo użycie porównania, które nie działa w czasie stałym. Użyj długiego losowego klucza i porównuj tagi w czasie stałym, a HMAC-SHA256 się obroni.
Dlaczego nie ma tu HMAC-MD5 ani HMAC-SHA-3?
Z założenia. To narzędzie udostępnia tylko SHA-1, SHA-256, SHA-384 i SHA-512, bo to właśnie te funkcje skrótu obsługuje natywne Web Crypto API przeglądarki, co utrzymuje wszystko szybkie i w całości po stronie klienta, bez dodatkowych bibliotek. HMAC-MD5 pominięto, bo MD5 jest przestarzałe i nie powinieneś zaczynać z nim nowych systemów. HMAC-SHA-3 pominięto, bo Web Crypto nie implementuje SHA-3; dodanie go wymagałoby dostarczenia polyfilla w JavaScript. W praktyce dla niemal wszystkich nowoczesnych zastosowań HMAC-SHA256 i tak jest właściwym wyborem.
HS256 (HMAC) vs RS256 (RSA) — którego użyć do JWT?
HS256 podpisuje i weryfikuje JWT jednym współdzielonym sekretem za pomocą HMAC-SHA256, podczas gdy RS256 podpisuje kluczem prywatnym RSA i weryfikuje pasującym kluczem publicznym. Użyj HS256, gdy jedna strona zarówno wydaje, jak i waliduje tokeny (monolit lub zaufane usługi wewnętrzne, które mogą bezpiecznie współdzielić sekret) — jest prostszy i szybszy. Użyj RS256, gdy strony trzecie lub wiele usług muszą weryfikować tokeny, ale nie mogą ich tworzyć, ponieważ możesz rozprowadzić tylko klucz publiczny. Strukturę zakodowaną obu możesz przejrzeć w koderze JWT; podpis HS256 to dokładnie HMAC-SHA256 nad nagłówkiem i ładunkiem.

Powiązane narzędzia

Zobacz wszystkie narzędzia →