Darmowy generator par kluczy RSA — ECDSA i Ed25519
Generator kluczy RSA online — klucz prywatny nie opuszcza przeglądarki. RSA 2048/4096, ECDSA i Ed25519, w PEM PKCS#8 lub PKCS#1, z JWK i odciskiem.
PKCS#8 (BEGIN PRIVATE KEY) to nowoczesny domyślny wybór i to, czego oczekuje JDK. PKCS#1 (BEGIN RSA PRIVATE KEY) to tradycyjna postać OpenSSL, wciąż wymagana przez część bramek. Przełączenie koduje na nowo ten sam klucz.
Zachowaj go w tajemnicy. Każdy, kto go ma, może się pod Ciebie podszyć.
Wygeneruj taki sam rodzaj pary kluczy w OpenSSL
Nasz zespół weryfikuje konwersję PKCS#8 na PKCS#1 bajt po bajcie względem wyjścia referencyjnego z modułu crypto w Node, więc klucz wyeksportowany tutaj jest identyczny z tym, który OpenSSL wytworzyłby dla tego samego materiału.
Czym jest generator kluczy RSA?
Generator kluczy RSA wytwarza matematycznie powiązaną parę: klucz prywatny, który zatrzymujesz, i klucz publiczny, który rozdajesz. Wszystko podpisane prywatną połową da się zweryfikować publiczną, a bezpiecznie publikować można wyłącznie tę drugą. Ta asymetria jest tu sednem — pozwala weryfikatorowi sprawdzać Twoje podpisy bez zyskiwania możliwości ich fałszowania, czego współdzielony sekret nigdy nie zaoferuje.
Ten generator działa wewnątrz przeglądarki dzięki Web Crypto API, więc klucz prywatny powstaje w karcie, a strona w trakcie generowania nie wysyła żadnego żądania sieciowego. Poza RSA tworzy też pary ECDSA i Ed25519, które służą temu samemu celowi przy znacznie krótszych kluczach: klucz prywatny Ed25519 ma w PKCS#8 48 bajtów, podczas gdy 2048-bitowy klucz RSA przekracza 1,2 kB.
Tym, co sprawia ludziom kłopot, nie jest matematyka, lecz opakowanie. Ten sam klucz można zapisać jako PKCS#8, PKCS#1, SPKI albo JWK, a biblioteka, która odrzuci jedno, często przyjmie drugie, nie dając jaśniejszego komunikatu niż błąd parsera. Tabela niżej przypisuje każdy kontener do ekosystemów, które go oczekują.
// Verify a downloaded key pair matches, using OpenSSL: openssl pkey -in rsa-2048-private.pem -pubout | diff - rsa-2048-public.pem // No output means the public key really belongs to that private key.
Kluczowe funkcje
Generowane w Twojej przeglądarce
Klucze pochodzą z Web Crypto API w Twojej własnej karcie, a strona w trakcie generowania nie wysyła żadnego żądania sieciowego. Wyłącz połączenie, a narzędzie nadal działa, co pokazuje, że do swojej pracy nie potrzebuje serwera.
RSA, ECDSA i Ed25519
RSA 2048, 3072 i 4096; ECDSA na krzywych P-256, P-384 i P-521; oraz Ed25519 — wszystko z jednej strony i z tymi samymi opcjami eksportu.
Wyjście w PKCS#8 i PKCS#1
Przełączaj się między BEGIN PRIVATE KEY a tradycyjnym układem BEGIN RSA PRIVATE KEY bez sięgania po OpenSSL. Przełącznik koduje na nowo klucz, który już jest na ekranie, więc pozostaje on tym samym kluczem.
Eksport do JWK
Obie połowy są dostępne jako klucze JSON Web Key. Publiczny JWK to ten, który trafia do dokumentu JWKS lub do weryfikatora JOSE; prywatny JWK jest wyłącznie dla Twojego modułu podpisującego i nigdy nie może zostać opublikowany.
Odcisk SHA-256
Każda para dostaje odcisk swojego klucza publicznego, więc osobnym kanałem potwierdzisz, że obie strony mają ten sam klucz.
Dopasowane polecenia OpenSSL
Równoważne polecenia, które generują lokalnie taki sam rodzaj klucza, są pokazane pod wynikiem, więc w każdej chwili możesz przejść do wiersza poleceń.
Pobrania o sensownych nazwach
Pliki zapisują się jako rsa-2048-private.pem i rsa-2048-public.pem, a nie pod ogólną nazwą, którą trzeba potem zmieniać.
Bez konta i bez limitu
Nie ma tu żadnego serwera, więc nie ma czego zakładać ani jakiego limitu wyczerpać.
Przykłady krok po kroku
Para Ed25519 pokazana w całości
Algorytm: Ed25519
-----BEGIN PRIVATE KEY----- MC4CAQAwBQYDK2VwBCIEIA2HJVU1qChbOJN8XksXVhyD0IjYVt0UU6Mwz814rOFf -----END PRIVATE KEY----- -----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAV5uB7UaPJrtncx3SXNtNzn1ZXjF1ApwvzBZ8nFzT5eU= -----END PUBLIC KEY-----
Klucz prywatny Ed25519 ma w PKCS#8 48 bajtów, a klucz publiczny 44, więc każdy blok PEM mieści jeden wiersz base64. To para pokazowa do wyrzucenia — wygeneruj własną, zamiast ją kopiować.
Nagłówki PKCS#8 i PKCS#1 różnią się
Algorytm: RSA 2048, przełączona struktura
PKCS#8: -----BEGIN PRIVATE KEY----- PKCS#1: -----BEGIN RSA PRIVATE KEY-----
Ten sam klucz, dwa opakowania. PKCS#8 dokłada wokół struktury RSA identyfikator algorytmu — dlatego obsługuje każdy algorytm, podczas gdy PKCS#1 istnieje wyłącznie dla RSA. Przełączenie koduje na nowo klucz, który już jest na ekranie, więc odcisk się nie zmienia.
Klucz publiczny RSA 2048
Algorytm: RSA 2048
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk/fbpPCGDyh71m73oB9Bk8+fKVkSThXyWTtpgblB7pX iQBtTvSWVZGHprkLgMGkU2Yw8Z43m1WpoRuYyXNFe92S5viIdVuKTj/VEUuEpzHd ffWMIUw70LaUdTP04iQdkNVeS3M6VHkpTwsPSQfsFSwObtLVNy2Lf+ODwJRqCk2r C749hgKqBdJqkcIj49R7UP4SMQ/9V3yy8DFMrIcgsjC4tHwlQSCGeXNxTNlapGSa ke55LUR83FASryVJRbUs678SCZSFkyGcT0qLZ/olu/e7Jj2lB0Qy/SJawkrs9hPE 4QIDAQAB -----END PUBLIC KEY-----
Prefiks MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A to identyfikator algorytmu rsaEncryption — po nim rozpoznasz klucz RSA w strukturze SPKI na pierwszy rzut oka.
Klucz publiczny jako JWK
Algorytm: Ed25519, panel JWK
{
"key_ops": [
"verify"
],
"ext": true,
"alg": "Ed25519",
"crv": "Ed25519",
"x": "V5uB7UaPJrtncx3SXNtNzn1ZXjF1ApwvzBZ8nFzT5eU",
"kty": "OKP"
} To dosłowny wynik eksportu, łącznie z polami key_ops i ext, które Web Crypto zawsze dodaje. Wpis w JWKS ich nie potrzebuje — usuń oba, a dodaj kid oraz use, aby weryfikatorzy mogli wybrać właściwy klucz podczas rotacji. Ed25519 trafia do typu klucza OKP; klucze RSA pojawiają się jako kty RSA z polami n oraz e.
Odcisk SHA-256
Algorytm: Ed25519
SHA256(SPKI) = KAXVxapxpG4zLsTVMpPafovT+X1NLWc8fsOXqtrb59o=
Skrót SHA-256 struktury klucza publicznego, na tyle krótki, by odczytać go przez telefon. Uwaga: to nie jest wartość, którą wypisuje ssh-keygen — OpenSSH liczy skrót ze swojego własnego formatu sieciowego, więc dla tego samego klucza obie nigdy się nie zgadzają.
Jak korzystać z generatora kluczy RSA
- 1
Wybierz algorytm
RSA obsługuje najszerszy zakres starszych systemów. ECDSA daje równoważną siłę przy znacznie krótszych kluczach. Ed25519 to nowoczesny domyślny wybór do nowych zastosowań podpisujących.
- 2
Wskaż długość klucza
RSA 2048 spełnia aktualne zalecenia; 3072 i 4096 dokładają zapasu kluczom o długim cyklu życia. ECDSA oferuje krzywe P-256, P-384 i P-521. Ed25519 ma jeden stały rozmiar.
- 3
Wybierz strukturę PEM
PKCS#8 emituje nagłówek BEGIN PRIVATE KEY i działa niemal wszędzie, również w JDK. Na PKCS#1 przełącz się tylko wtedy, gdy coś wprost wymaga BEGIN RSA PRIVATE KEY.
- 4
Skopiuj lub pobierz obie połowy
Klucz prywatny trafia do menedżera sekretów. Klucz publiczny trafia do tego, kto weryfikuje Twoje podpisy. Prywatnej połowy nie wysyłaj nigdzie.
- 5
Zweryfikuj odcisk
Porównaj odcisk SHA-256 osobnym kanałem, aby potwierdzić, że druga strona zainstalowała dokładnie ten klucz publiczny, który tu powstał.
Częste błędy w formatach kluczy
Wklejenie klucza publicznego tam, gdzie ma być prywatny
Podpisywanie wymaga prywatnej połowy. Biblioteka, która dostanie BEGIN PUBLIC KEY zamiast klucza prywatnego, zwykle zgłasza mało pomocny błąd parsera, zamiast nazwać prawdziwy problem.
-----BEGIN PUBLIC KEY-----
-----BEGIN PRIVATE KEY-----
Zła struktura PEM dla danej biblioteki
Tylko kilka ekosystemów czyta wyłącznie tradycyjny układ RSA — własne wyjście OpenSSL z flagą -traditional, część SDK bramek płatniczych, starsze narzędzia Ruby i Perla. Większość nowoczesnych bibliotek, a JDK w szczególności, oczekuje PKCS#8. Przełącz strukturę PEM, zamiast szukać polecenia konwersji.
-----BEGIN RSA PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
Utrata końcowego znaku nowego wiersza
Pliki PEM kończą się znakiem nowego wiersza po ostatnim ograniczniku. Kopiowanie przez pole formularza, które obcina białe znaki, daje plik odrzucany wprost przez część parserów — a ponieważ brakujący znak jest niewidoczny, w edytorze plik wygląda poprawnie.
-----END PRIVATE KEY-----[EOF]
-----END PRIVATE KEY-----↵[EOF]
Znak zgubiony po drodze
PEM psuje znak zgubiony, wstawiony albo podmieniony, a nie szerokość wiersza — większość parserów przyjmuje dowolne łamanie. Kopiowanie przez komunikator albo pole formularza potrafi po cichu zamienić złamanie wiersza w spację, a base64 nie podpowie, który znak poszedł źle; klucz po prostu się nie wczytuje. Używaj przycisku kopiowania zamiast zaznaczania ręką.
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuvUHLjyK9zje2aaNIni eSccN1uleXFRBb1g2TN6bk
Użycie sekretu HS256 tam, gdzie skonfigurowano RS256
HS256 bierze jeden współdzielony sekret; RS256 bierze parę kluczy. Podanie losowego ciągu podpisującemu RS256 kończy się błędem już na etapie odczytu. Wygeneruj parę tutaj albo użyj naszego generatora sekretu JWT, jeśli chodziło o HS256.
alg: RS256, key: 8f3a9c2e1b7d
alg: RS256, key: -----BEGIN PRIVATE KEY-----
Wklejenie bloku PEM do authorized_keys
Publiczny klucz SSH to jednowierszowy format OpenSSH ssh-ed25519 AAAA…, a nie blok PEM, więc wklejenie klucza publicznego z tej strony do authorized_keys nie zadziała. Dla klucza RSA właściwy wiersz wyprowadzisz lokalnie poleceniem ssh-keygen -y; a do samego dostępu przez SSH i tak lepiej wygenerować klucz na maszynie docelowej.
-----BEGIN PUBLIC KEY-----
ssh-keygen -y -f rsa-2048-private.pem > id_rsa.pub
Kto korzysta z tego narzędzia
- Podpisywanie JWT algorytmem RS256 lub EdDSA
- Asymetryczne algorytmy JWT potrzebują pary kluczy, a nie współdzielonego sekretu. Podpisuj kluczem prywatnym, publikuj klucz publiczny, a weryfikatorzy nigdy nie trzymają niczego, co pozwala wystawiać tokeny. Nasz koder JWT przyjmuje klucze wytworzone na tej stronie.
- Podpisywanie webhooków i wydań
- Opublikuj klucz publiczny raz, podpisuj każdy payload kluczem prywatnym, a odbiorcy zweryfikują autentyczność bez współdzielonych danych uwierzytelniających, które mogłyby wyciec.
- Lokalna deweloperka i testy
- Zestawy testów sprawdzające weryfikację podpisu potrzebują jednorazowej pary kluczy. Wygenerowanie jej tutaj idzie szybciej niż przypominanie sobie składni polecenia OpenSSL.
- Nauka tego, jak wygląda para kluczy
- Przełączanie algorytmów i struktur PEM obok siebie unaocznia różnice w sposób, jakiego lektura specyfikacji nie daje.
- Przygotowanie endpointu JWKS
- Publiczny JWK wpada prosto do tablicy keys w dokumencie discovery OpenID Connect. Dodaj kid, aby weryfikatorzy mogli go wybrać podczas rotacji, i trzymaj prywatny JWK poza tym plikiem.
- Migracja z RSA na coś nowszego
- Wygeneruj zamiennik Ed25519 obok oryginału RSA i porównaj rozmiary, zanim zdecydujesz się na zmianę.
- Naprawa niezgodności formatów
- Gdy biblioteka odrzuca klucz błędem parsera, ponowne wyemitowanie go w drugiej strukturze PEM zwykle załatwia całą sprawę.
Formaty PEM i jak działa generator
- Który kontener gdzie pasuje
- Jeden klucz, pięć opakowań. Wybranie niewłaściwego to najczęstszy powód odrzucenia klucza, a komunikat o błędzie rzadko mówi coś więcej niż „nie udało się odczytać”.
Do konwersji plików, które już masz,Kontener Nagłówek PEM Zawiera Gdzie go spotkasz PKCS#8 BEGIN PRIVATE KEY Dowolny algorytm Web Crypto, JDK, Go, .NET — większość nowoczesnych bibliotek PKCS#1 BEGIN RSA PRIVATE KEY Tylko RSA Tradycyjne wyjście OpenSSL, część bramek płatniczych, starsze narzędzia Ruby i Perla SPKI / X.509 BEGIN PUBLIC KEY Dowolny algorytm, połowa publiczna Klucz publiczny, którego oczekuje niemal każda biblioteka PKCS#1 publiczny BEGIN RSA PUBLIC KEY Tylko RSA, połowa publiczna Starsze narzędzia RSA JWK brak — to JSON Dowolny algorytm Endpointy JWKS, discovery OIDC, biblioteki JOSE openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pemprowadzi w jedną stronę, aopenssl rsa -traditional -in pkcs8.pem -out pkcs1.pemw drugą. - Losowość pochodzi z systemu operacyjnego
- Web Crypto zasila generowanie kluczy ze źródła entropii platformy — getrandom w Linuksie oraz systemowy CSPRNG w Windowsie i macOS. To ta sama klasa źródła, z której czerpie OpenSSL, a nie pseudolosowy generator JavaScriptu.
- Generowanie nie zamraża strony
- crypto.subtle.generateKey jest asynchroniczne, a w głównych silnikach przeglądarek poszukiwanie liczb pierwszych odbywa się poza głównym wątkiem, więc interfejs pozostaje responsywny w trakcie szukania 4096-bitowego modułu. Strona i tak pokazuje wskaźnik postępu, bo długość tego poszukiwania zależy od szczęścia w losowaniu.
- PKCS#8 opakowuje PKCS#1
- Struktura PrivateKeyInfo z PKCS#8 to numer wersji, identyfikator algorytmu i OCTET STRING. Dla niezaszyfrowanego klucza rsaEncryption ten OCTET STRING zawiera kompletny RSAPrivateKey z PKCS#1 — i właśnie dlatego strona przechodzi między obiema postaciami, nie wyliczając niczego na nowo.
- Klucze publiczne używają SubjectPublicKeyInfo
- BEGIN PUBLIC KEY to SubjectPublicKeyInfo z X.509: identyfikator algorytmu plus BIT STRING. To, co siedzi w tych bitach, zależy od algorytmu — dla RSA jest to RSAPublicKey z PKCS#1, dlatego BEGIN RSA PUBLIC KEY jest krótszy; dla ECDSA nieskompresowany punkt krzywej, a dla Ed25519 surowy 32-bajtowy klucz.
- Wykładnik publiczny wynosi 65537
- Każdy klucz RSA używa tu e = 65537, zapisywanego jako 0x010001. Jest dostatecznie duży, by uniknąć ataków na mały wykładnik, i ma tylko dwa ustawione bity, więc weryfikacja kosztuje 16 podniesień do kwadratu i jedno mnożenie.
- Odciski liczone są z DER, nie z PEM
- Odcisk SHA-256 powstaje na binarnej strukturze SubjectPublicKeyInfo. Liczenie go z tekstu base64 zmieniałoby wynik przy każdej zmianie łamania wierszy. Lokalny odpowiednik to
openssl pkey -in private.pem -pubout -outform DER | openssl dgst -sha256 -binary | openssl base64.
Dobre praktyki zarządzania kluczami
- Generuj klucze tam, gdzie będą używane
- Klucz prywatny, który przeszedł przez sieć, był wystawiony na każdy węzeł po drodze. Generowanie w przeglądarce trzyma sam klucz poza siecią, choć kod strony wciąż przez nią przychodzi; generowanie na docelowym hoście usuwa nawet krok kopiowania. Dla klucza chroniącego systemy produkcyjne wybieraj hosta.
- Wybieraj Ed25519, chyba że coś wymaga RSA
- Ed25519 daje mocne bezpieczeństwo w 32-bajtowym kluczu, szybko podpisuje i nie ma parametrów, które można źle dobrać. Po RSA sięgaj wtedy, gdy kontrahent albo stara biblioteka nie zostawia wyboru.
- Traktuj 2048 bitów jako dolną granicę
- NIST SP 800-131A od 2013 roku nie dopuszcza RSA poniżej 2048 bitów do generowania podpisów, a żaden publiczny urząd certyfikacji nie wystawi certyfikatu dla mniejszego klucza. Dla kluczy, które mają służyć wiele lat, wybieraj 3072 lub 4096.
- Nigdy nie zapisuj klucza prywatnego w repozytorium
- Klucze prywatne trzymaj w menedżerze sekretów albo w zmiennej środowiskowej wczytywanej w czasie działania. Gdy klucz raz trafi do repozytorium, jedyną bezpieczną reakcją jest jego rotacja.
- Rotuj planowo, nie dopiero po incydencie
- Publikuj nowe klucze publiczne z identyfikatorem klucza, zanim wycofasz stare, aby weryfikatorzy przez czas nakładania się przyjmowali oba. Rotacja ćwiczona rutynowo to rotacja, która zadziała pod presją.
Najczęstsze pytania
Czy generowanie klucza prywatnego na stronie internetowej jest bezpieczne?
Czym różni się PKCS#8 od PKCS#1?
Jak przekonwertować klucz PKCS#1 na PKCS#8 i odwrotnie?
Jak uzyskać klucz publiczny z prywatnego klucza RSA?
RSA czy Ed25519 — co wybrać?
Czy 2048-bitowe RSA jest wciąż wystarczająco mocne?
Czy tymi kluczami mogę podpisywać tokeny JWT?
Czy da się tu wygenerować klucz SSH?
Czy mogę zabezpieczyć klucz prywatny hasłem?
Do czego służy odcisk?
Powiązane narzędzia
Zobacz wszystkie narzędzia →Narzędzie do odszyfrowywania AES — OpenSSL i CryptoJS
Narzędzia bezpieczeństwa
Odszyfruj AES online — GCM/CBC/CTR, hasło lub klucz surowy, automatyczne wykrywanie formatu OpenSSL i CryptoJS „U2FsdGVkX1”. 100% w przeglądarce, klucze nigdy jej nie opuszczają.
Narzędzie do szyfrowania AES — GCM, CBC i CTR
Narzędzia bezpieczeństwa
Darmowe szyfrowanie AES online — AES-128/192/256, GCM/CBC/CTR, hasło (PBKDF2) lub klucz surowy. Działa w 100% w przeglądarce; nic nie jest przesyłane.
Generator i weryfikator skrótów bcrypt
Narzędzia bezpieczeństwa
Generuj i weryfikuj skróty bcrypt haseł online — regulowany koszt, prefiksy $2b$/$2a$/$2y$. W 100% w przeglądarce; Twoje hasło nigdy nie jest wysyłane.
Generator HMAC i weryfikator podpisów
Narzędzia bezpieczeństwa
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.
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.
Koder i generator JWT
Narzędzia bezpieczeństwa
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.