Conversor de Chaves JWK ⇄ PEM
Converta chaves criptográficas entre os formatos JWK e PEM usando a Web Crypto API real, descodifique algoritmo/curva/tamanho e calcule o thumbprint JWK RFC 7638.
🔒 Processado inteiramente em seu navegador – nada que você digita aqui é carregado.
Resultado
JSON Web Keys (JWK) e chaves no formato PEM aparecem de forma intercambiável em bibliotecas JWT, ferramentas TLS e configuração OAuth/OIDC, mas converter manualmente entre os dois significa descodificar estruturas DER em base64 ou reformatar JSON — fácil de errar subtilmente. Esta ferramenta faz a conversão com a Web Crypto API real do navegador, em vez de manipular texto: um bloco PEM colado é importado com crypto.subtle.importKey('spki'|'pkcs8', ...) e reexportado como JWK com exportKey('jwk', ...); um JWK colado é importado com importKey('jwk', ...) e reexportado como DER SPKI ou PKCS8, e depois encapsulado no cabeçalho PEM correto. Como o próprio navegador valida e descodifica o material da chave, uma chave malformada ou uma seleção de algoritmo errada falha ruidosamente, em vez de produzir silenciosamente lixo.
Os algoritmos suportados são RSA (RSASSA-PKCS1-v1_5), EC nas curvas P-256/P-384/P-521 e — quando o navegador os implementar — Ed25519 e X25519. O suporte a Ed25519/X25519 no Web Crypto ainda é inconsistente entre motores, por isso, em vez de adivinhar pela string de user agent, a ferramenta executa uma sonda real crypto.subtle.generateKey() para a curva selecionada e diz claramente se não é suportada aqui, em vez de devolver um resultado fabricado.
Cada conversão também descodifica os metadados reais da chave: para chaves RSA, o comprimento do módulo em bits e o algoritmo de hash diretamente do objeto CryptoKey; para chaves EC e OKP, a curva nomeada; e para qualquer chave, o thumbprint JWK RFC 7638 — um hash SHA-256 dos membros obrigatórios do JWK serializados em ordem lexicográfica estrita (e/kty/n para RSA, crv/kty/x/y para EC, crv/kty/x para OKP/Ed25519/X25519). Este thumbprint é o que muitos sistemas usam como identificador "kid" da chave, e cometer um erro na ordem dos membros produz um hash completamente diferente, que é exatamente o tipo de engano a que uma implementação manual está sujeita.
Uma vez que tudo é executado através de crypto.subtle no seu próprio browser, o material da chave privada nunca sai do seu dispositivo — não existe servidor, nem upload, nem qualquer chamada a API externa em qualquer momento da conversão.