0

Convertisseur de clés JWK ⇄ PEM

Convertissez des clés cryptographiques entre les formats JWK et PEM en utilisant la véritable API Web Crypto, décodez l'algorithme/la courbe/la taille, et calculez l'empreinte JWK selon le RFC 7638.

🔒 Entièrement traité dans votre navigateur — rien de ce que vous saisissez ici n'est jamais téléchargé.

Traitement en cours... 0%
Analyse de la clé
Conversion du format
Calcul de l'empreinte
Terminé

Résultat

Les JSON Web Keys (JWK) et les clés encodées en PEM apparaissent de manière interchangeable dans les bibliothèques JWT, les outils TLS et les configurations OAuth/OIDC, mais les convertir manuellement implique de décoder du base64 pour les structures DER ou de reformater du JSON — facile de se tromper subtilement. Cet outil effectue la conversion avec la véritable API Web Crypto du navigateur plutôt qu'en manipulant du texte : un bloc PEM collé est importé avec crypto.subtle.importKey('spki'|'pkcs8', ...) et ré-exporté en JWK avec exportKey('jwk', ...) ; un JWK collé est importé avec importKey('jwk', ...) et ré-exporté en DER SPKI ou PKCS8, puis encapsulé avec le bon en-tête PEM. Comme le navigateur lui-même valide et décode le matériel de clé, une clé mal formée ou une sélection d'algorithme incorrecte échoue bruyamment au lieu de produire silencieusement des données invalides.

Les algorithmes supportés sont RSA (RSASSA-PKCS1-v1_5), EC sur les courbes P-256/P-384/P-521, et — là où le navigateur les implémente — Ed25519 et X25519. La prise en charge d'Ed25519/X25519 par Web Crypto est encore inégale selon les moteurs de navigateur, donc au lieu de deviner à partir de la chaîne user agent, l'outil exécute une véritable sonde crypto.subtle.generateKey() pour la courbe sélectionnée et vous indique clairement si elle n'est pas supportée ici, plutôt que de renvoyer un résultat fabriqué.

Chaque conversion décode également les métadonnées réelles de la clé : pour les clés RSA, la longueur en bits du module et l'algorithme de hachage directement depuis l'objet CryptoKey ; pour les clés EC et OKP, la courbe nommée ; et pour chaque clé, l'empreinte JWK selon le RFC 7638 — un hachage SHA-256 des membres obligatoires du JWK sérialisés dans un ordre lexicographique strict (e/kty/n pour RSA, crv/kty/x/y pour EC, crv/kty/x pour OKP/Ed25519/X25519). Cette empreinte est ce que de nombreux systèmes utilisent comme identifiant « kid » d'une clé, et se tromper dans l'ordre des membres produit un hachage complètement différent, ce qui est précisément le genre d'erreur auquel une implémentation artisanale est sujette.

Comme tout s'exécute via crypto.subtle dans votre propre onglet de navigateur, la clé privée ne quitte jamais votre appareil — il n'y a ni serveur, ni téléversement, ni appel à une API externe à aucun moment de la conversion.