0

Μετατροπέας κλειδιών JWK ⇄ PEM

Μετατρέπει κρυπτογραφικά κλειδιά μεταξύ μορφής JWK και PEM χρησιμοποιώντας το πραγματικό Web Crypto API, αποκωδικοποιεί αλγόριθμο/καμπύλη/μέγεθος και υπολογίζει το αποτύπωμα JWK κατά RFC 7638.

🔒 Επεξεργάζεται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας — τίποτα που εισάγετε εδώ δεν μεταφορτώνεται ποτέ.

Επεξεργασία... 0%
Ανάλυση κλειδιού
Μετατροπή μορφής
Υπολογισμός αποτυπώματος
Ολοκληρώθηκε

Αποτέλεσμα

Τα JSON Web Keys (JWK) και τα PEM-κωδικοποιημένα κλειδιά συναντώνται εναλλακτικά σε βιβλιοθήκες JWT, εργαλεία TLS και ρυθμίσεις OAuth/OIDC, αλλά η χειροκίνητη μετατροπή μεταξύ των δύο σημαίνει base64-αποκωδικοποίηση δομών DER ή αναδιαμόρφωση JSON — εύκολο να κάνετε ανεπαίσθητα λάθος. Αυτό το εργαλείο κάνει τη μετατροπή με το πραγματικό Web Crypto API του browser αντί για χειρισμό κειμένου: ένα επικαλλημένο μπλοκ PEM εισάγεται με crypto.subtle.importKey('spki'|'pkcs8', ...) και επανεξάγεται ως JWK με exportKey('jwk', ...)· ένα επικαλλημένο JWK εισάγεται με importKey('jwk', ...) και επανεξάγεται ως SPKI ή PKCS8 DER, και στη συνέχεια τυλίγεται στη σωστή κεφαλίδα PEM. Επειδή ο ίδιος ο browser επικυρώνει και αποκωδικοποιεί το υλικό κλειδιού, ένα κακοσχηματισμένο κλειδί ή μια εσφαλμένη επιλογή αλγορίθμου αποτυγχάνει άμεσα αντί να παράγει σιωπηρά άχρηστα δεδομένα.

Οι υποστηριζόμενοι αλγόριθμοι είναι RSA (RSASSA-PKCS1-v1_5), EC στις καμπύλες P-256/P-384/P-521 και — όπου ο browser τα υλοποιεί — Ed25519 και X25519. Η υποστήριξη των browser για Ed25519/X25519 στο Web Crypto είναι ακόμα ασυνεπής μεταξύ μηχανών, γι' αυτό αντί να υποθέτει από το user agent string, το εργαλείο εκτελεί έναν πραγματικό έλεγχο crypto.subtle.generateKey() για την επιλεγμένη καμπύλη και σας ενημερώνει ξεκάθαρα αν δεν υποστηρίζεται εδώ, αντί να επιστρέφει ένα κατασκευασμένο αποτέλεσμα.

Κάθε μετατροπή αποκωδικοποιεί επίσης τα πραγματικά μεταδεδομένα του κλειδιού: για κλειδιά RSA, το μήκος modulus σε bit και τον αλγόριθμο κατακερματισμού απευθείας από το αντικείμενο CryptoKey· για κλειδιά EC και OKP, την ονομασμένη καμπύλη· και για κάθε κλειδί, το αποτύπωμα JWK κατά RFC 7638 — έναν κατακερματισμό SHA-256 των απαιτούμενων μελών του JWK σειριοποιημένων σε αυστηρή λεξικογραφική σειρά (e/kty/n για RSA, crv/kty/x/y για EC, crv/kty/x για OKP/Ed25519/X25519). Αυτό το αποτύπωμα είναι αυτό που πολλά συστήματα χρησιμοποιούν ως αναγνωριστικό "kid" ενός κλειδιού, και το να κάνετε λάθος στη σειρά των μελών παράγει έναν εντελώς διαφορετικό κατακερματισμό, το είδος ακριβώς του σφάλματος στο οποίο είναι επιρρεπής μια χειροποίητη υλοποίηση.

Επειδή όλα εκτελούνται μέσω του crypto.subtle στην καρτέλα του browser σας, το υλικό του ιδιωτικού κλειδιού δεν φεύγει ποτέ από τη συσκευή σας — δεν υπάρχει server, upload ή εξωτερική κλήση API σε κανένα σημείο της μετατροπής.