0

Conversor de claves JWK ⇄ PEM

Convierta claves criptográficas entre formato JWK y PEM usando la API Web Crypto real, decodifique el algoritmo, la curva y el tamaño, y calcule la huella JWK según RFC 7638.

🔒 Procesado íntegramente en su navegador: nada de lo que ingresa aquí se carga nunca.

Procesando... 0%
Analizando clave
Convirtiendo formato
Calculando huella
Listo

Resultado

Las JSON Web Keys (JWK) y las claves codificadas en PEM aparecen indistintamente en librerías JWT, herramientas TLS y configuración OAuth/OIDC, pero convertir entre ambos formatos a mano implica decodificar estructuras DER en base64 o reformatear JSON — fácil de equivocarse sutilmente. Esta herramienta realiza la conversión con la API Web Crypto real del navegador en lugar de manipular texto: un bloque PEM pegado se importa con crypto.subtle.importKey('spki'|'pkcs8', ...) y se reexporta como JWK con exportKey('jwk', ...); un JWK pegado se importa con importKey('jwk', ...) y se reexporta como DER SPKI o PKCS8, y luego se envuelve en el encabezado PEM correcto. Como el navegador mismo valida y decodifica el material de la clave, una clave malformada o una selección de algoritmo incorrecta falla estrepitosamente en lugar de producir basura silenciosamente.

Los algoritmos soportados son RSA (RSASSA-PKCS1-v1_5), EC en las curvas P-256/P-384/P-521 y —cuando el navegador los implementa— Ed25519 y X25519. El soporte de los navegadores para Ed25519/X25519 en Web Crypto aún es inconsistente entre motores, así que en lugar de adivinar por la cadena de agente de usuario, la herramienta ejecuta una prueba real con crypto.subtle.generateKey() para la curva seleccionada y le indica claramente si no está soportada aquí, en vez de devolver un resultado inventado.

Cada conversión también decodifica los metadatos reales de la clave: para claves RSA, la longitud en bits del módulo y el algoritmo de hash directamente del objeto CryptoKey; para claves EC y OKP, la curva con nombre; y para cada clave, la huella JWK según RFC 7638 — un hash SHA-256 de los miembros requeridos del JWK serializados en orden lexicográfico estricto (e/kty/n para RSA, crv/kty/x/y para EC, crv/kty/x para OKP/Ed25519/X25519). Esta huella es lo que muchos sistemas usan como identificador "kid" de la clave, y equivocarse en el orden de los miembros produce un hash completamente diferente, que es justo el tipo de error al que es propensa una implementación artesanal.

Como todo se ejecuta a través de crypto.subtle en la pestaña de su propio navegador, el material de la clave privada nunca sale de su dispositivo — no hay servidor, ni carga, ni llamada a API externa involucrada en ningún momento de la conversión.