0

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

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

Buy Me a Coffee at ko-fi.com
Επεξεργασία... 0%
Κλειδί ανάλυσης
Μετατροπή μορφής
Υπολογιστικό αποτύπωμα
Έγινε

Αποτέλεσμα

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

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

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

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