JWK ⇄ PEM конвертор кључева
Конвертујте криптографске кључеве између JWK и PEM формата користећи прави Web Crypto API, декодирајте алгоритам/криву/величину и израчунајте RFC 7638 JWK отисак.
🔒 У потпуности се обрађује у вашем претраживачу — ништа што овде унесете се никада не отпрема.
Резултат
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-у је и даље недоследна међу покретачима, па уместо да нагађа из user agent ниске, алат покреће стварну проверу crypto.subtle.generateKey() за изабрану криву и отворено вам каже ако овде није подржана, уместо да врати измишљени резултат.
Свака конверзија такође декодира стварне метаподатке кључа: за RSA кључеве, дужину модула у битовима и хеш алгоритам директно из CryptoKey објекта; за EC и OKP кључеве, именовану криву; и за сваки кључ, RFC 7638 JWK отисак — SHA-256 хеш обавезних чланова JWK-а серијализованих у строгом лексикографском редоследу (e/kty/n за RSA, crv/kty/x/y за EC, crv/kty/x за OKP/Ed25519/X25519). Овај отисак је оно што многи системи користе као идентификатор „kid“ кључа, а погрешно навођење редоследа чланова производи потпуно другачији хеш, што је управо врста грешке којој је склона ручно писана имплементација.
Пошто се све извршава кроз crypto.subtle у картици вашег прегледача, материјал приватног кључа никада не напушта ваш уређај — нема сервера, нема отпремања и нема спољног API позива ни у једном тренутку конверзије.