JWK ⇄ PEM nøkkelkonverterer
Konverter kryptografiske nøkler mellom JWK- og PEM-format ved hjelp av det ekte Web Crypto API-et, dekod algoritme/kurve/størrelse og beregn RFC 7638 JWK-tommelavtrykket.
🔒 Behandles i sin helhet i nettleseren din – ingenting du skriver inn her blir noen gang lastet opp.
Resultat
JSON Web Keys (JWK) og PEM-kodede nøkler dukker opp om hverandre i JWT-biblioteker, TLS-verktøy og OAuth/OIDC-konfigurasjon, men å konvertere mellom de to for hånd betyr base64-dekoding av DER-strukturer eller omformatering av JSON — lett å få små, men kritiske feil. Dette verktøyet gjør konverteringen med nettleserens ekte Web Crypto API i stedet for tekstmanipulasjon: en limt PEM-blokk importeres med crypto.subtle.importKey('spki'|'pkcs8', ...) og re-eksporteres som JWK med exportKey('jwk', ...); en limt JWK importeres med importKey('jwk', ...) og re-eksporteres som SPKI eller PKCS8 DER, og pakkes deretter inn i riktig PEM-header. Siden nettleseren selv validerer og dekoder nøkkelmaterialet, vil en feilformatert nøkkel eller et feil algoritmevalg feile høyt i stedet for å produsere søppel i stillhet.
Støttede algoritmer er RSA (RSASSA-PKCS1-v1_5), EC på kurvene P-256/P-384/P-521 og — der nettleseren implementerer dem — Ed25519 og X25519. Nettleserstøtte for Ed25519/X25519 i Web Crypto er fortsatt inkonsistent på tvers av motorer, så i stedet for å gjette ut fra brukeragentstrengen, kjører verktøyet en ekte crypto.subtle.generateKey()-sonde for den valgte kurven og forteller deg rett ut om den ikke støttes her, i stedet for å returnere et oppdiktet resultat.
Hver konvertering dekoder også nøkkelens virkelige metadata: for RSA-nøkler, modulus bitlengde og hash-algoritme direkte fra CryptoKey-objektet; for EC- og OKP-nøkler, den navngitte kurven; og for hver nøkkel, RFC 7638 JWK-tommelavtrykket — en SHA-256-hash av JWK-ens påkrevde medlemmer serialisert i streng leksikografisk rekkefølge (e/kty/n for RSA, crv/kty/x/y for EC, crv/kty/x for OKP/Ed25519/X25519). Dette tommelavtrykket er det mange systemer bruker som en nøkkels "kid"-identifikator, og å få medlemsrekkefølgen feil produserer en helt annen hash, noe som er akkurat den typen feil en håndlaget implementasjon er utsatt for.
Siden alt kjører gjennom crypto.subtle i din egen nettleserfane, forlater privat nøkkelmateriale aldri enheten din — det er ingen server, ingen opplasting og ingen eksterne API-kall involvert på noe tidspunkt i konverteringen.