0

JWK ⇄ Konverter Kunci PEM

Konversikan kunci kriptografi antara format JWK dan PEM menggunakan Web Crypto API yang sebenarnya, dekode algoritma/kurva/ukuran, dan hitung sidik jari RFC 7638 JWK.

Buy Me a Coffee at ko-fi.com
Memproses... 0%
Kunci penguraian
Konversi format
Menghitung sidik jari
Selesai

Hasil

Kunci Web JSON (JWK) dan kunci yang dikodekan PEM muncul secara bergantian di seluruh pustaka JWT, peralatan TLS, dan konfigurasi OAuth/OIDC, namun mengonversi keduanya dengan tangan berarti mendekode struktur DER base64 atau memformat ulang JSON — mudah untuk membuat kesalahan halus. Alat ini melakukan konversi dengan Web Crypto API asli browser alih-alih manipulasi teks: blok PEM yang ditempelkan diimpor dengan crypto.subtle.importKey('spki'|'pkcs8', ...) dan diekspor kembali sebagai JWK dengan eksporKey('jwk', ...); JWK yang ditempel diimpor dengan importKey('jwk', ...) dan diekspor kembali sebagai SPKI atau PKCS8 DER, lalu dibungkus dengan header PEM yang benar. Karena browser itu sendiri yang memvalidasi dan mendekode materi kunci, kunci yang salah format atau pemilihan algoritme yang tidak cocok akan gagal secara signifikan alih-alih menghasilkan sampah secara diam-diam.

Algoritme yang didukung adalah RSA (RSASSA-PKCS1-v1_5), EC pada kurva P-256/P-384/P-521, dan — di mana browser mengimplementasikannya — Ed25519 dan X25519. Dukungan browser untuk Ed25519/X25519 di Web Crypto masih tidak konsisten di seluruh mesin, jadi alih-alih menebak dari string agen pengguna, alat tersebut menjalankan probe crypto.subtle.generateKey() sebenarnya untuk kurva yang dipilih dan memberi tahu Anda dengan jelas jika tidak didukung di sini, daripada mengembalikan hasil palsu.

Setiap konversi juga menerjemahkan metadata kunci yang sebenarnya: untuk kunci RSA, panjang bit modulus dan algoritma hash langsung dari objek CryptoKey; untuk kunci EC dan OKP, kurva bernama; dan untuk setiap kunci, cap jempol RFC 7638 JWK — hash SHA-256 dari anggota JWK yang diperlukan yang diserialkan dalam urutan leksikografis yang ketat (e/kty/n untuk RSA, crv/kty/x/y untuk EC, crv/kty/x untuk OKP/Ed25519/X25519). Sidik jari inilah yang digunakan oleh banyak sistem sebagai pengidentifikasi "anak-anak" kunci, dan kesalahan dalam urutan anggota akan menghasilkan hash yang berbeda sama sekali, yang merupakan jenis kesalahan yang rentan terjadi pada implementasi manual.

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