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 на браузъра вместо с текстова манипулация: поставен 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 ключове — именуваната крива; и за всеки ключ — JWK пръстовия отпечатък по RFC 7638 — SHA-256 хеш на задължителните членове на JWK, сериализирани в строг лексикографски ред (e/kty/n за RSA, crv/kty/x/y за EC, crv/kty/x за OKP/Ed25519/X25519). Този пръстов отпечатък е това, което много системи използват като идентификатор "kid" на ключа, а грешното подреждане на членовете води до съвсем различен хеш, което е точно такъв тип грешка, към която са склонни ръчно написани реализации.

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