Convertisseur de clé JWK ⇄ PEM
Convertissez les clés cryptographiques entre les formats JWK et PEM à l'aide de la véritable API Web Crypto, décodez l'algorithme/la courbe/la taille et calculez l'empreinte numérique RFC 7638 JWK.
Résultat
Les clés Web JSON (JWK) et les clés codées PEM apparaissent de manière interchangeable dans les bibliothèques JWT, les outils TLS et la configuration OAuth/OIDC, mais la conversion manuelle entre les deux signifie décoder les structures DER en base64 ou reformater JSON - il est facile de se tromper subtilement. Cet outil effectue la conversion avec la véritable API Web Crypto du navigateur au lieu de la manipulation de texte : un bloc PEM collé est importé avec crypto.subtle.importKey('spki'|'pkcs8', ...) et réexporté au format JWK avec exportKey('jwk', ...) ; un JWK collé est importé avec importKey('jwk', ...) et réexporté au format SPKI ou PKCS8 DER, puis enveloppé dans l'en-tête PEM correct. Étant donné que 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 incompatible échoue bruyamment au lieu de produire silencieusement des déchets.
Les algorithmes pris en charge sont RSA (RSASSA-PKCS1-v1_5), EC sur les courbes P-256/P-384/P-521 et, lorsque le navigateur les implémente, Ed25519 et X25519. La prise en charge par le navigateur d'Ed25519/X25519 dans Web Crypto est toujours incohérente entre les moteurs, donc au lieu de deviner à partir de la chaîne de l'agent utilisateur, 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 prise en charge 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 à partir de l'objet CryptoKey ; pour les clés EC et OKP, la courbe nommée ; et pour chaque clé, l'empreinte RFC 7638 JWK — un hachage SHA-256 des membres requis du JWK sérialisé 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 digitale est ce que de nombreux systèmes utilisent comme identifiant "enfant" d'une clé, et un mauvais ordre des membres produit un hachage entièrement différent, ce qui est exactement le genre d'erreur à laquelle une implémentation manuelle est sujette.
Étant donné que tout passe par crypto.subtle dans l'onglet de votre propre navigateur, le matériel de clé privée ne quitte jamais votre appareil : il n'y a aucun serveur, aucun téléchargement et aucun appel d'API externe impliqué à aucun moment de la conversion.