Enkripsi RSA dengan Kunci Publik
Enkripsi pesan pendek dengan kunci publik RSA (PEM) memakai RSA-OAEP SHA-256, OAEP SHA-1, atau PKCS#1 v1.5. Buat pasangan kunci uji dengan sekali klik. Hanya lokal.
OAEP adalah padding yang disarankan. MGF1 memakai hash yang sama, seperti Web Crypto dan openssl pkeyutl -pkeyopt rsa_oaep_md.
RSA hanya bisa mengenkripsi data pendek: untuk kunci 2048 bit maksimal 190 byte (OAEP SHA-256), 214 byte (OAEP SHA-1), atau 245 byte (PKCS#1 v1.5). Untuk data lebih panjang, enkripsi dengan AES lalu enkripsi kunci AES-nya saja dengan RSA.
Enkripsi RSA bersifat acak: mengenkripsi teks yang sama dua kali menghasilkan ciphertext berbeda, dan keduanya tetap bisa didekripsi dengan benar.
Berjalan sepenuhnya di browser Anda. Data Anda tidak pernah diunggah.
Apa itu Enkripsi RSA?
Mengenkripsi pesan pendek atau kunci simetris dengan kunci publik RSA dalam format PEM (SPKI BEGIN PUBLIC KEY, PKCS#1 BEGIN RSA PUBLIC KEY, sertifikat X.509, atau kunci privat yang bagian publiknya diambil). Hanya pemilik kunci privat pasangannya yang dapat mendekripsi hasilnya.
Cara menggunakan Enkripsi RSA
- Tempel Kunci publik (PEM) milik penerima, atau klik Buat pasangan kunci uji (2048 bit) untuk mencoba.
- Pilih Padding: RSA-OAEP (SHA-256) disarankan; sesuaikan dengan yang diharapkan kode penerima.
- Ketik Plaintext (atau ubah encoding input ke Hex untuk mengenkripsi byte mentah seperti kunci AES).
- Klik Enkripsi lalu salin ciphertext Base64 atau Hex-nya.
Contoh
"Hello RSA" with a 2048-bit public key, RSA-OAEP (SHA-256), Base64 output
String Base64 sepanjang 344 karakter (256 byte) yang berubah setiap kali dijalankan
RSA-OAEP bersifat acak, jadi tidak ada output tetap; mendekripsinya dengan kunci privat menghasilkan "Hello RSA".
Kapan menggunakan Enkripsi RSA
Gunakan RSA untuk mengenkripsi rahasia kecil – kata sandi, token, atau kunci AES acak – bagi seseorang yang kunci publiknya Anda miliki. Jangan gunakan untuk data besar: enkripsi datanya dengan AES dan hanya kunci AES-nya yang dienkripsi dengan RSA (enkripsi hibrida), atau gunakan PGP. Utamakan OAEP; gunakan PKCS#1 v1.5 hanya jika sistem lawas mewajibkannya.
Cara kerja Enkripsi RSA
Enkripsi RSA menghitung c = mᵉ mod n pada pesan yang sudah di-padding. OAEP (PKCS#1 v2.2) menyamarkan pesan dengan MGF1 memakai SHA-256 atau SHA-1 dan byte seed acak; PKCS#1 v1.5 menambahkan padding acak bukan nol di depan. Padding bersifat acak, sehingga mengenkripsi teks yang sama dua kali menghasilkan ciphertext berbeda. Panjang ciphertext sama dengan modulus (256 byte untuk kunci 2048 bit). Ukuran pesan maksimum adalah k − 2·hLen − 2 byte untuk OAEP dan k − 11 untuk v1.5 (190, 214, dan 245 byte untuk kunci 2048 bit). Kunci diurai dan enkripsi dilakukan dengan node-forge; hasilnya kompatibel dengan OpenSSL, Web Crypto, dan Node.js.
Kasus Penggunaan Umum
- Mengenkripsi kunci sesi AES untuk pengujian enkripsi hibrida
- Memeriksa bahwa backend Anda bisa mendekripsi ciphertext OAEP-SHA256 dari browser
- Mengirim rahasia pendek kepada seseorang yang memberikan kunci publiknya
- Membuat data uji PKCS#1 v1.5 untuk API lawas
- Mempelajari bagaimana batas ukuran pesan RSA bergantung pada ukuran kunci dan padding
Catatan Keamanan
Kunci dan pesan hanya diproses di browser Anda. Jangan menempel kunci privat produksi ke situs web mana pun yang tidak Anda kendalikan – buat pasangan kunci uji sebagai gantinya.
Pertanyaan Umum
Mengapa pesan saya terlalu panjang?
RSA hanya bisa mengenkripsi beberapa ratus byte. Dengan kunci 2048 bit, OAEP SHA-256 mengizinkan 190 byte. Enkripsi data yang lebih panjang dengan AES dan gunakan RSA hanya untuk kunci AES-nya.
Padding mana yang sebaiknya saya pilih?
RSA-OAEP dengan SHA-256 untuk sistem baru (Web Crypto RSA-OAEP dengan hash: 'SHA-256', OpenSSL pkeyutl -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256). OAEP SHA-1 adalah default banyak library lama (Java RSA/ECB/OAEPWithSHA-1AndMGF1Padding). PKCS#1 v1.5 hanya untuk kompatibilitas sistem lawas.
Mengapa ciphertext berubah setiap kali?
Kedua jenis padding menambahkan byte acak sebelum enkripsi. Ini mencegah penyerang menebak pesan pendek dengan mengenkripsi sendiri kandidat-kandidatnya.
Bisakah saya mengenkripsi dengan kunci privat?
Anda bisa menempel kunci privat – bagian publiknya yang dipakai untuk enkripsi. "Mengenkripsi dengan kunci privat" dalam arti menandatangani adalah operasi yang berbeda dan tidak tersedia di sini.