Enkripsi & Dekripsi RSA
Enkripsi dengan kunci publik RSA dan dekripsi dengan kunci privat (OAEP atau PKCS#1 v1.5).
openssl pkeyutl -decrypt -inkey private.pem -in ciphertext.bin -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256Enkripsi sebuah rahasia pendek dengan kunci publik RSA seseorang (atau sertifikatnya) agar hanya pemegang kunci privat yang bisa membacanya, atau dekripsi ciphertext dengan kunci privat Anda. Pilih OAEP dengan SHA-256 (disarankan), OAEP dengan SHA-1, atau PKCS#1 v1.5; hasilnya berupa Base64 atau hex dan bisa dipakai dengan OpenSSL. Semuanya berjalan di browser Anda, jadi kunci dan pesan tidak pernah keluar dari perangkat; gratis dan tanpa perlu mendaftar.
Cara mengenkripsi dan mendekripsi dengan RSA
- Pilih Enkripsi atau Dekripsi, lalu tempel kunci atau buka file kunci: kunci publik atau sertifikat untuk mengenkripsi, kunci privat (PKCS#8 atau PKCS#1) untuk mendekripsi.
- Pilih padding: OAEP · SHA-256, kecuali pihak lain membutuhkan yang lain.
- Ketik pesan, atau tempel ciphertext sebagai Base64 atau hex. Hasilnya muncul saat Anda mengetik.
- Salin hasilnya, atau unduh ciphertext sebagai file .bin untuk OpenSSL.
Fitur
- Enkripsi dengan kunci publik, sertifikat, atau bagian publik dari kunci privat; dekripsi dengan kunci privat
- OAEP dengan SHA-256 (bawaan), OAEP dengan SHA-1, atau PKCS#1 v1.5
- Kunci dalam PEM atau DER: SPKI, PKCS#1, PKCS#8, dan sertifikat X.509, hingga 16.384 bit
- Ciphertext sebagai Base64 atau hex, atau file .bin; mendekripsi Base64 atau hex yang ditempel, atau file .bin yang dibuka
- Menampilkan berapa byte yang bisa dienkripsi dengan kunci dan padding tersebut, serta perintah openssl pkeyutl yang setara
- Berjalan di worker WebAssembly di browser Anda
Apakah privasi terjaga?
Ya. Enkripsi dan dekripsi berjalan di browser Anda, di worker WebAssembly; kunci, pesan, dan ciphertext tidak pernah diunggah atau disimpan.
Pertanyaan umum
Seberapa panjang pesan yang bisa dienkripsi?
RSA mengenkripsi satu blok. Dengan kunci 2048 bit, batasnya 190 byte dengan OAEP SHA-256, 214 dengan OAEP SHA-1, dan 245 dengan PKCS#1 v1.5; kunci yang lebih besar memungkinkan lebih banyak. Untuk data yang lebih panjang, enkripsi dengan cipher simetris, atau gunakan Enkripsi File.
Mengapa ciphertext selalu berbeda?
Setiap padding menambahkan byte acak sebelum enkripsi, jadi pesan yang sama menghasilkan ciphertext baru setiap kali. Itu memang disengaja, dan semuanya terdekripsi menjadi pesan yang sama.
Apakah bisa dipakai dengan OpenSSL?
Bisa. Ciphertext yang dibuat di sini bisa didekripsi dengan openssl pkeyutl -decrypt -inkey private.pem -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 (atau rsa_padding_mode:pkcs1), dan ciphertext yang dibuat dengan openssl pkeyutl -encrypt bisa didekripsi di sini. Pakai padding yang sama di kedua sisi.
Format kunci apa saja yang bisa dipakai?
Kunci publik PEM (BEGIN PUBLIC KEY atau BEGIN RSA PUBLIC KEY), sertifikat, dan kunci privat tanpa enkripsi dalam PKCS#8 (BEGIN PRIVATE KEY) atau PKCS#1 (BEGIN RSA PRIVATE KEY), juga sebagai file DER. Kunci yang dilindungi kata sandi dan kunci OpenSSH perlu dikonversi dulu; alat ini menjelaskan caranya.
Mengapa dekripsi gagal?
Biasanya karena padding atau kuncinya. Dekripsi dengan padding yang sama seperti saat enkripsi, dan dengan kunci privat yang merupakan pasangan dari kunci publik yang dipakai; alat ini sengaja tidak membedakan keduanya, jadi cobalah padding lainnya. Panjang ciphertext selalu sama dengan panjang kunci (256 byte untuk kunci 2048 bit), jadi ciphertext yang lebih pendek berarti terpotong saat disalin.