JWK ⇄ PEM převodník klíčů
Převádějte kryptografické klíče mezi JWK a PEM formátem pomocí skutečného Web Crypto API, dekódujte algoritmus/křivku/velikost a počítejte otisk JWK podle RFC 7638.
🔒 Zpracováno výhradně ve vašem prohlížeči – nic, co zde zadáte, se nikdy nenahraje.
Výsledek
JSON Web Keys (JWK) a PEM-kódované klíče se zaměnitelně objevují napříč JWT knihovnami, TLS nástroji a konfigurací OAuth/OIDC, ale ruční převod mezi nimi znamená base64-dekódování DER struktur nebo přeformátování JSON – snadno se dopustíte nepatrné chyby. Tento nástroj provádí převod pomocí skutečného Web Crypto API prohlížeče namísto manipulace s textem: vložený PEM blok je importován pomocí crypto.subtle.importKey('spki'|'pkcs8', ...) a znovu exportován jako JWK pomocí exportKey('jwk', ...); vložený JWK je importován pomocí importKey('jwk', ...) a znovu exportován jako SPKI nebo PKCS8 DER, poté zabalen do správné PEM hlavičky. Protože prohlížeč sám ověřuje a dekóduje klíčový materiál, chybný klíč nebo nesprávný výběr algoritmu hlasitě selže, místo aby potichu produkoval odpad.
Podporované algoritmy jsou RSA (RSASSA-PKCS1-v1_5), EC na křivkách P-256/P-384/P-521 a – tam kde je prohlížeč implementuje – Ed25519 a X25519. Podpora prohlížečů pro Ed25519/X25519 ve Web Crypto je napříč prohlížeči stále nekonzistentní, takže místo hádání podle user agent řetězce nástroj spustí reálnou sondu crypto.subtle.generateKey() pro vybranou křivku a oznámí, pokud zde není podporována, namísto vracení vykonstruovaného výsledku.
Každý převod také dekóduje reálná metadata klíče: pro RSA klíče délku modulu v bitech a hashovací algoritmus přímo z CryptoKey objektu; pro EC a OKP klíče pojmenovanou křivku; a pro každý klíč otisk JWK podle RFC 7638 – SHA-256 hash povinných členů JWK serializovaných v přísném lexikografickém pořadí (e/kty/n pro RSA, crv/kty/x/y pro EC, crv/kty/x pro OKP/Ed25519/X25519). Tento otisk je to, co mnohé systémy používají jako identifikátor „kid“ klíče, a chybné pořadí členů produkuje úplně jiný hash, což je přesně ten druh chyby, ke které má podomácku udělaná implementace sklony.
Protože vše běží přes crypto.subtle ve vaší vlastní záložce prohlížeče, privátní klíčový materiál nikdy neopustí vaše zařízení – během převodu není zapojen žádný server, žádné nahrávání ani žádné volání externího API.