0

Konverter Kunci JWK ⇄ PEM

Konversi kunci kriptografi antara format JWK dan PEM menggunakan Web Crypto API asli, dekode algoritme/kurva/ukuran, dan hitung thumbprint JWK RFC 7638.

🔒 Diproses sepenuhnya di browser Anda — apa pun yang Anda masukkan di sini tidak akan pernah diunggah.

Memproses... 0%
Mengurai kunci
Mengonversi format
Menghitung thumbprint
Selesai

Hasil

JSON Web Keys (JWK) dan kunci berenkode PEM muncul secara bergantian di berbagai pustaka JWT, peranti TLS, dan konfigurasi OAuth/OIDC, tetapi mengonversi keduanya secara manual berarti dekode base64 struktur DER atau memformat ulang JSON — mudah membuat kesalahan kecil. Alat ini melakukan konversi dengan Web Crypto API asli browser alih-alih manipulasi teks: blok PEM yang ditempel diimpor dengan crypto.subtle.importKey('spki'|'pkcs8', ...) dan diekspor ulang sebagai JWK dengan exportKey('jwk', ...); JWK yang ditempel diimpor dengan importKey('jwk', ...) dan diekspor ulang sebagai SPKI atau PKCS8 DER, lalu dibungkus dalam header PEM yang benar. Karena browser sendiri yang memvalidasi dan mendekode materi kunci, kunci yang cacat atau pemilihan algoritme yang tidak cocok akan gagal dengan pesan jelas alih-alih diam-diam menghasilkan sampah.

Algoritme yang didukung adalah RSA (RSASSA-PKCS1-v1_5), EC pada kurva P-256/P-384/P-521, dan — jika browser menerapkannya — Ed25519 dan X25519. Dukungan browser untuk Ed25519/X25519 di Web Crypto masih tidak konsisten antar mesin, jadi alih-alih menebak dari string agen pengguna, alat ini menjalankan pemeriksaan crypto.subtle.generateKey() nyata untuk kurva yang dipilih dan memberi tahu Anda secara gamblang jika tidak didukung di sini, bukannya mengembalikan hasil buatan.

Setiap konversi juga mendekode metadata nyata kunci: untuk kunci RSA, panjang bit modulus dan algoritme hash langsung dari objek CryptoKey; untuk kunci EC dan OKP, kurva yang dinamai; dan untuk setiap kunci, thumbprint JWK RFC 7638 — hash SHA-256 dari anggota wajib JWK yang diserialkan dalam urutan leksikografis ketat (e/kty/n untuk RSA, crv/kty/x/y untuk EC, crv/kty/x untuk OKP/Ed25519/X25519). Thumbprint inilah yang digunakan banyak sistem sebagai pengenal "kid" kunci, dan kesalahan urutan anggota akan menghasilkan hash yang sama sekali berbeda, persis jenis kesalahan yang rentan terjadi pada implementasi manual.

Karena semuanya berjalan melalui crypto.subtle di tab browser Anda sendiri, materi kunci privat tidak pernah meninggalkan perangkat Anda — tidak ada server, unggahan, atau panggilan API eksternal yang terlibat pada titik mana pun dalam konversi.