Koder i generator JWT
Darmowy generator i koder JWT online. Zbuduj header i payload, podpisz HS256, RS256 lub ES256 natychmiast. W 100% w przeglądarce — sekret i klucz nie opuszczają urządzenia.
Czym jest koder JWT?
Koder JWT buduje i kryptograficznie podpisuje JSON Web Token z header i payload zawierającego claims. JWT, zdefiniowany w RFC 7519, to trzy sekcje zakodowane w Base64URL i połączone kropkami: header.payload.signature. Header nazywa algorytm podpisu; payload niesie claims (kogo dotyczy token, co może robić, kiedy wygasa); a signature to kryptograficzny dowód, obliczony na podstawie header i payload kluczem tajnym lub prywatnym, który pozwala odbiorcy wykryć modyfikacje.
„JSON Web Token (JWT) to zwarty format reprezentacji claims przeznaczony dla środowisk z ograniczonym miejscem, takich jak nagłówki HTTP Authorization i parametry zapytań URI.” — RFC 7519, sekcja 1
Kodowanie jest odwrotnością dekodowania. Dekoder JWT odczytuje claims istniejącego tokena; koder bierze claims, które podajesz, i tworzy zupełnie nowy podpisany token. Krok podpisywania jest tym, co odróżnia prawdziwy JWT od dowolnego Base64 — bez poprawnego signature żaden weryfikator nie zaakceptuje tokena. To narzędzie podpisuje natywnym Web Crypto API przeglądarki w rodzinach HMAC (HS), RSA (RS, PS) i ECDSA (ES), więc cała operacja odbywa się na Twoim urządzeniu, z zerem zależności i zerem wywołań sieciowych.
Programiści sięgają po koder JWT bez przerwy: aby wystawić token sprawdzający chroniony endpoint API, aby odtworzyć dokładny kształt claim wystawianych przez serwer OAuth i zdebugować błąd, aby zbudować fixture do testów integracyjnych albo aby przekazać współpracownikowi gotowy do użycia token Bearer do polecenia curl. Ponieważ payload jest zakodowany, ale nieszyfrowany, JWT można bezpiecznie przesyłać przez sieć, ale nigdy nie wolno umieszczać w nim sekretów — każdy, kto ma token, może odczytać każdy claim, a tylko signature powstrzymuje go przed zmianą któregokolwiek z nich.
Praca z JWT naturalnie łączy się z innymi narzędziami programistycznymi. Po podpisaniu zdekoduj token, aby potwierdzić jego claims, zamień exp i iat między czasem Unix a czytelnymi datami lub oblicz skrót SHA-256, gdy potrzebujesz podstawowej funkcji skrótu, na której zbudowane jest HMAC w HS256. Ponieważ każdy segment JWT jest zakodowany w Base64URL, narzędzie Base64 przydaje się przy ręcznym sprawdzaniu tokena; aby dogłębnie poznać to kodowanie, zajrzyj do naszego przewodnika po podstawach Base64.
// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
const b64url = (bytes) =>
btoa(String.fromCharCode(...new Uint8Array(bytes)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
const enc = (obj) =>
b64url(new TextEncoder().encode(JSON.stringify(obj)));
const header = { alg: 'HS256', typ: 'JWT' };
const signingInput = `${enc(header)}.${enc(payload)}`;
const key = await crypto.subtle.importKey(
'raw', new TextEncoder().encode(secret),
{ name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const sig = await crypto.subtle.sign(
'HMAC', key, new TextEncoder().encode(signingInput));
return `${signingInput}.${b64url(sig)}`;
}
const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0.... Kluczowe funkcje
Natychmiastowe generowanie i podpisywanie JWT
Edytuj payload i obserwuj, jak podpisany token aktualizuje się w czasie rzeczywistym — header, payload i signature obliczane w locie. Bez przycisku „Generuj”, bez rundy do serwera.
Pełne pokrycie algorytmów
Podpisuj algorytmami HS256/384/512, RS256/384/512, PS256/384/512 oraz ES256/384/512 — każdą popularną rodziną JWS, wszystko przez natywne Web Crypto API przeglądarki.
Klucze nigdy nie opuszczają urządzenia
Twój sekret i klucz prywatny PKCS8 są używane w całości w przeglądarce. Nic nie jest wysyłane, logowane ani zapisywane — bezpieczne przy tworzeniu i reakcji na incydent.
Pomocniki szybkiego claim
Wstaw iss, sub, aud, iat, nbf lub jednogodzinny exp jednym kliknięciem — bez ręcznych timestampów Unix, bez potknięć składniowych.
Wynik oznaczony kolorami
Podpisany token jest podzielony na header, payload i signature wyraźnymi kolorami, dzięki czemu struktura jest oczywista na pierwszy rzut oka i łatwa do skopiowania.
Zero zależności
Zbudowane wyłącznie na Web Crypto API przeglądarki i JSON — bez bibliotek zewnętrznych, bez telemetrii, bez jakichkolwiek wywołań sieciowych.
Przykłady
Token sesyjny HS256
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>
Token HMAC-SHA256 podpisany współdzielonym sekretem — najczęstszy schemat dla bezstanowego uwierzytelniania sesji. Każdy, kto ma ten sam sekret, może go zweryfikować.
Token dostępu RS256
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"scope": "read:user write:post",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8) eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>
Token dostępu w stylu OAuth podpisany kluczem RSA. Token jest podpisywany kluczem prywatnym i weryfikowany przez każdego, kto ma pasujący klucz publiczny — idealny, gdy weryfikujący nie powinien móc wystawiać tokenów.
Zwarty token ES256
{
"sub": "device-42",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256) eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>
Token ECDSA na krzywej P-256. Podpisy ES256 są znacznie krótsze niż RSA przy równoważnym poziomie bezpieczeństwa, co utrzymuje mały rozmiar tokena w środowiskach o ograniczonych zasobach.
Jak używać
- 1
Edytuj claims w payload
Wpisz claims, których potrzebuje token, jako JSON w edytorze payload. Użyj chipów szybkiego claim, aby wstawić iss, sub, aud, iat, nbf lub jednogodzinny exp bez wpisywania timestampów.
- 2
Wybierz algorytm i wpisz klucz
Wybierz algorytm podpisu. Dla HS256/384/512 wpisz sekret; dla algorytmów RS, PS lub ES wklej klucz prywatny PKCS8 PEM. Token jest podpisywany lokalnie w trakcie pisania.
- 3
Skopiuj podpisany JWT
Podpisany token pojawia się natychmiast, oznaczony kolorami segmentów. Kliknij Kopiuj, aby przenieść go do nagłówka Authorization, polecenia curl lub testu. Twój klucz nigdy nie opuścił przeglądarki.
Common Errors
Użycie słabego sekretu HMAC
Bezpieczeństwo HS256 zależy w całości od entropii sekretu. Krótki lub łatwy do odgadnięcia sekret pozwala napastnikom złamać go siłowo i sfałszować tokeny. Użyj co najmniej 256 bitów losowości.
secret: "password123" // guessable, low entropy
secret: base64(crypto.randomBytes(32)) // >=256 random bits
Pominięcie claim exp
Token bez exp nigdy nie wygasa. Jeśli wycieknie, nie ma naturalnego punktu unieważnienia. Zawsze ustawiaj wygaśnięcie odpowiednie do typu tokena.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } Wklejenie klucza PKCS1 zamiast PKCS8
Web Crypto API importuje tylko klucze prywatne PKCS8. Tradycyjny klucz RSA PKCS1 nie zaimportuje się — przekonwertuj go najpierw.
-----BEGIN RSA PRIVATE KEY----- // PKCS1, not supported
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem
Typowe zastosowania
- Generowanie tokenów do testów API
- Wygeneruj token Bearer HS256 w kilka sekund, aby sprawdzić chroniony endpoint z curl, Postmana lub testu integracyjnego.
- Odtwarzanie tokenów OAuth i OIDC
- Zbuduj token RS256 lub ES256 odzwierciedlający to, co wystawia Twój serwer autoryzacji, aby zdebugować niezgodności claim i audience.
- Tworzenie fixture testowych
- Wytwórz deterministyczne podpisane tokeny do testów jednostkowych i integracyjnych bez stawiania pełnego serwera uwierzytelniania.
- Debugowanie błędów autoryzacji
- Odtwórz kształt tokena klienta — issuer, audience, scope, wygaśnięcie — aby znaleźć przyczynę, dla której backend go odrzuca.
- Walidacja weryfikatora
- Podpisuj tokeny znanym kluczem, aby potwierdzić, że Twoja warstwa weryfikacji akceptuje poprawne tokeny i odrzuca zmodyfikowane.
- Prototypowanie przepływów uwierzytelniania
- Przekaż współpracownikom gotowe do użycia tokeny podczas budowania nowego logowania, mikroserwisu lub wywołania między usługami.
Szczegóły techniczne
- Zgodność z RFC 7519 / 7515 / 7518
- Tworzy tokeny JWS zgodne z RFC 7519 (JWT), RFC 7515 (JWS) i RFC 7518 (JWA), z zarejestrowanymi identyfikatorami algorytmów w header.
- Natywne podpisywanie Web Crypto
- Podpisuje przez crypto.subtle dla HMAC, RSASSA-PKCS1-v1_5, RSA-PSS i ECDSA. Podpisy ECDSA są emitowane jako surowe r||s, dokładnie tak, jak wymaga JWS.
- Base64URL, zero zależności
- Header i payload są kodowane w Base64URL alfabetem bezpiecznym dla URL-i (RFC 4648), bez paddingu. Bez bibliotek zewnętrznych, bez wywołań sieciowych, bez telemetrii.
Dobre praktyki
- Zawsze ustawiaj wygaśnięcie
- Dodaj claim exp, aby token, który wyciekł, przestał być ważny. Krótkie czasy życia zmniejszają zasięg szkód — minuty dla tokenów dostępu, a nie dni.
- Trzymaj sekrety poza payload
- Payload JWT jest czytelny dla każdego, kto ma token. Umieszczaj w nim identyfikatory i scope; nigdy haseł, kluczy API ani pełnych danych osobowych.
- Podpisuj po stronie serwera na produkcji
- Używaj tego narzędzia do testów i debugowania. W prawdziwych systemach podpisuj tokeny na serwerze utrzymywaną biblioteką i kluczem z menedżera sekretów.
Najczęściej zadawane pytania
Jak wygenerować JWT online?
Czym jest generator JWT?
header.payload.signature, którego można użyć jako tokena Bearer. Jest odwrotnością dekodera JWT: zamiast odczytywać istniejący token, tworzy nowy podpisany sekretem (HS256) lub kluczem prywatnym (RS256/ES256). Ten generator działa w całości w przeglądarce, więc token powstaje natychmiast, a klucz podpisujący nigdy nie opuszcza urządzenia. Czy ten generator JWT jest darmowy i bezpieczny w użyciu?
Czy bezpiecznie jest wpisać tutaj mój sekret lub klucz prywatny?
Jaka jest różnica między HS256 a RS256?
Jakie algorytmy obsługuje ten koder JWT?
Jak ustawić claim exp (wygaśnięcie)?
exp jako timestamp Unix w sekundach — na przykład "exp": 1999999999. Najszybszą drogą jest chip exp +1h pod payloadem, który wstawia wygaśnięcie za godzinę od teraz. Tak samo można dodać iat (issued-at) oraz nbf (not-before). Pamiętaj, że exp jest w sekundach, a nie milisekundach, oraz że weryfikujący porównują go z własnym zegarem, więc utrzymuj zsynchronizowany czas serwerów, aby uniknąć przedwczesnych odrzuceń. Aby zamienić czytelną datę na timestamp Unix, użyj naszego konwertera timestampów Unix. Jak uzyskać klucz prywatny PKCS8 PEM dla RS256 lub ES256?
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. Dla ECDSA P-256: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Oba polecenia emitują blok PKCS8 PEM zaczynający się od -----BEGIN PRIVATE KEY-----, czyli dokładnie to, czego oczekuje to narzędzie. Wklej cały blok, łącznie z wierszami nagłówka i stopki. Pasujący klucz publiczny — używany do weryfikacji tokena — można wyprowadzić poleceniem openssl pkey -in private.pem -pubout. Jak zweryfikować token, który właśnie wygenerowałem?
jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }) w Node.js, PyJWT.decode(token, key, algorithms=['RS256']) w Pythonie lub jwt.Parse(token, keyFunc) w Go. Nigdy nie weryfikuj z pustą listą algorytmów ani z verify_signature=False na produkcji — zawsze przypinaj dokładny algorytm, którego oczekujesz. Co umieścić w payload?
iss (issuer), sub (subject — zwykle ID użytkownika), aud (audience), exp (expiration), nbf (not before), iat (issued at) oraz jti (ID tokena). Obok nich można dodać claims aplikacyjne, takie jak role, scope czy email. Nie umieszczaj sekretów w payload — JWT jest zakodowany, ale nieszyfrowany, więc każdy, kto ma token, może odczytać każdy claim. Utrzymuj tokeny poniżej około 4 KB, aby mieściły się w nagłówkach Authorization i w cookies. Czy JWT jest szyfrowany?
Dlaczego podpisywanie RS256 lub ES256 zawodzi?
-----BEGIN RSA PRIVATE KEY----- (PKCS1) poleceniem openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem; (2) krzywa nie pasuje do algorytmu — ES256 wymaga klucza P-256, ES384 wymaga P-384, ES512 wymaga P-521; (3) wkleiłeś klucz publiczny lub certyfikat zamiast klucza prywatnego; albo (4) klucz jest zaszyfrowany hasłem, którego Web Crypto API nie potrafi bezpośrednio zaimportować. Odszyfruj go najpierw poleceniem openssl pkey i wklej niezaszyfrowany blok PKCS8. Czy to narzędzie obsługuje niepodpisany token alg:none?
alg:none nie ma signature, co oznacza, że każdy może go sfałszować — jest źródłem klasycznej podatności obejścia uwierzytelniania JWT. Ponieważ całym sensem kodera jest tworzenie podpisanego tokena, to narzędzie oferuje wyłącznie prawdziwe algorytmy podpisu. Jeśli badasz alg:none na potrzeby bezpieczeństwa, możesz skonstruować taki token ręcznie, kodując header i payload w Base64URL i pozostawiając pusty segment signature — token kończy się wtedy kropką (header.payload.) — ale na produkcji nigdy nie wolno akceptować takiego tokena. Czy mogę wygenerować JWT w kodzie zamiast tego?
jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). W Pythonie: jwt.encode(payload, key, algorithm='RS256') z PyJWT. W Go: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). To narzędzie to najszybszy sposób na wytworzenie tokena do szybkiego testu, żądania curl lub fixture — ale w kodzie aplikacji tokeny powinieneś generować po stronie serwera utrzymywaną biblioteką i kluczem wczytanym z menedżera sekretów, nigdy zapisanym na sztywno. Powiązane narzędzia
Zobacz wszystkie narzędzia →Dekoder JWT
Narzędzia bezpieczeństwa
Dekoduj JWT online darmowym dekoderem JWT. Sprawdź header, payload, signature, claims i wygaśnięcie. W 100% w przeglądarce — token nie opuszcza urządzenia.
Generator MD5 hash i sum kontrolnych plików
Narzędzia bezpieczeństwa
Generuj hashe MD5, SHA-256, SHA-1 oraz SHA-512 online za darmo. Hashuj tekst lub pliki w przeglądarce, weryfikuj sumy kontrolne i kopiuj wyniki. Bez rejestracji.
Generator haseł — konfigurowalny, silny i bezpieczny
Narzędzia bezpieczeństwa
Wygeneruj silne losowe hasła natychmiast — za darmo, w 100% w przeglądarce. Dostosuj długość i znaki, partia do 50 z analizą entropii.
Generator SHA-1 hash (160-bitowy, przestarzały)
Narzędzia bezpieczeństwa
Generuj hash SHA-1 online — 40-znakowy wynik hex, bez przesyłania. Narzędzie dla odcisków Git, weryfikacji starych certyfikatów i audytów migracji. Dane nie opuszczają urządzenia.
Generator SHA-256 hash i sum kontrolnych
Narzędzia bezpieczeństwa
Generuj hashe SHA-256 online za darmo. Hashuj tekst lub pliki w przeglądarce, weryfikuj sumy kontrolne, kopiuj 64-znakowy wynik hex. Bez rejestracji — dane nie opuszczają strony.
Generator SHA-3 hash (Keccak SHA3-256)
Narzędzia bezpieczeństwa
Generuj hashe SHA-3 online za darmo. Konstrukcja gąbki NIST FIPS 202 — standard po SHA-2. Wyjście SHA3-256 w 64 znakach hex. Tylko przeglądarka przez lazy-loaded js-sha3; zero przesyłania.