0

JWK ⇄ PEM конвертор на ключове

Преобразувайте криптографски ключове между JWK и PEM формат, като използвате реалния Web Crypto API, декодирайте алгоритъм/крива/размер и изчислете RFC 7638 JWK отпечатък.

Buy Me a Coffee at ko-fi.com
Обработка... 0%
Ключ за анализ
Конвертиране на формат
Изчисляване на пръстов отпечатък
Готово

Резултат

JSON уеб ключовете (JWK) и PEM-кодираните ключове се показват взаимозаменяемо в JWT библиотеки, TLS инструментариум и OAuth/OIDC конфигурация, но преобразуването между двете ръчно означава DER структури за декодиране на base64 или преформатиране на 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 ключове, дължината на модулния бит и хеш алгоритъма направо от обекта CryptoKey; за ключове EC и OKP, наречената крива; и за всеки ключ RFC 7638 JWK thumbprint — SHA-256 хеш на необходимите членове на JWK, сериализирани в строг лексикографски ред (e/kty/n за RSA, crv/kty/x/y за EC, crv/kty/x за OKP/Ed25519/X25519). Този пръстов отпечатък е това, което много системи използват като идентификатор на „дете“ на ключа и грешното подреждане на членовете създава изцяло различен хеш, което е точно видът грешка, към която е склонна ръчно навитата реализация.

Тъй като всичко минава през crypto.subtle в раздела на вашия собствен браузър, частният ключов материал никога не напуска вашето устройство — няма сървър, няма качване и няма външно API извикване, включено във всеки момент от преобразуването.