JWK ⇄ PEM Key Converter
Konvertera kryptografiska nycklar mellan JWK- och PEM-format med den verkliga Web Crypto API, avkoda algoritm/kurva/storlek och beräkna RFC 7638 JWK-tumavtrycket.
Resultat
JSON-webbnycklar (JWK) och PEM-kodade nycklar visas omväxlande över JWT-bibliotek, TLS-verktyg och OAuth/OIDC-konfiguration, men att konvertera mellan de två för hand innebär base64-avkodning av DER-strukturer eller omformatering av JSON - lätt att få subtilt fel. Det här verktyget gör konverteringen med webbläsarens verkliga webbkrypterings-API istället för textmanipulering: ett inklistrat PEM-block importeras med crypto.subtle.importKey('spki'|'pkcs8', ...) och återexporteras som JWK med exportKey('jwk', ...); en inklistrad JWK importeras med importKey('jwk', ...) och återexporteras som SPKI eller PKCS8 DER och lindas sedan in i rätt PEM-huvud. Eftersom webbläsaren själv validerar och avkodar nyckelmaterialet, misslyckas en felaktig nyckel eller ett felaktigt val av algoritm högt istället för att i tysthet producera skräp.
Algoritmer som stöds är RSA (RSASSA-PKCS1-v1_5), EC på P-256/P-384/P-521-kurvorna och — där webbläsaren implementerar dem — Ed25519 och X25519. Webbläsarstöd för Ed25519/X25519 i Web Crypto är fortfarande inkonsekvent mellan olika motorer, så istället för att gissa från användaragentsträngen kör verktyget en faktisk crypto.subtle.generateKey()-sond för den valda kurvan och talar om för dig om den inte stöds här, snarare än att returnera ett tillverkat resultat.
Varje konvertering avkodar också nyckelns verkliga metadata: för RSA-nycklar, modulbitlängden och hashalgoritmen direkt från CryptoKey-objektet; för EC- och OKP-tangenter, den namngivna kurvan; och för varje nyckel, RFC 7638 JWK-tumavtrycket — en SHA-256-hash av JWK:s obligatoriska medlemmar serialiserade i strikt lexikografisk ordning (e/kty/n för RSA, crv/kty/x/y för EC, crv/kty/x för OKP/Ed25519/X25). Detta tumavtryck är vad många system använder som en nyckels "kid"-identifierare, och att få medlemsordningen fel ger en helt annan hash, vilket är exakt den typ av misstag en handrullad implementering är benägen för.
Eftersom allt körs genom crypto.subtle på din egen webbläsarflik, lämnar aldrig privat nyckelmaterial din enhet – det finns ingen server, ingen uppladdning och inget externt API-anrop inblandat vid något tillfälle i konverteringen.