Enkripsi Stream Cipher Rabbit
Enkripsi teks dengan stream cipher Rabbit (RFC 4503, eSTREAM) memakai frasa sandi berformat CryptoJS atau kunci hex 128 bit dan IV 64 bit. Berjalan secara lokal.
Output memakai format OpenSSL "Salted__" dalam Base64 dengan kunci dan IV yang diturunkan dari frasa sandi – format yang sama dengan CryptoJS.Rabbit.encrypt(text, passphrase). OpenSSL sendiri tidak punya cipher Rabbit.
Berjalan sepenuhnya di browser Anda. Data Anda tidak pernah diunggah.
Apa itu Enkripsi Rabbit?
Mengenkripsi data dengan Rabbit, stream cipher 128 bit yang cepat dari portofolio eSTREAM (RFC 4503). Cipher ini terutama dijumpai di proyek JavaScript yang memakai CryptoJS.Rabbit, dan alat ini menghasilkan output yang kompatibel dengannya.
Cara menggunakan Enkripsi Rabbit
- Pilih Frasa sandi (kompatibel OpenSSL) lalu ketik frasa sandi, atau Kunci mentah + IV (hex) dengan kunci 16 byte dan IV 8 byte opsional.
- Ketik atau tempel Plaintext.
- Klik Enkripsi, pilih output Base64 atau Hex, lalu salin hasilnya.
Contoh
Raw key 000102030405060708090a0b0c0d0e0f, IV 0001020304050607, plaintext "Rabbit stream", Hex output
a0e87bbfc85cd88a7e42510ffa
Hasil yang sama dengan CryptoJS.Rabbit dengan kunci dan IV yang sama.
Kapan menggunakan Enkripsi Rabbit
Gunakan untuk berinteroperasi dengan aplikasi yang memakai CryptoJS Rabbit atau untuk menguji kode semacam itu. Untuk desain baru, pilih AES-GCM atau ChaCha20-Poly1305, yang sudah distandarkan dan terautentikasi.
Cara kerja Enkripsi Rabbit
Rabbit menyimpan 513 bit state internal (delapan word state 32 bit, delapan counter, dan satu bit carry) dan menghasilkan 128 bit keystream per iterasi, yang di-XOR dengan data. Kuncinya 128 bit; IV 64 bit opsional membuat keystream setiap pesan unik. Mode frasa sandi menurunkan kunci dan IV dari frasa sandi dan salt acak dengan EVP_BytesToKey (MD5) atau PBKDF2-SHA256 dan menghasilkan data Base64 Salted__ – identik dengan CryptoJS.Rabbit.encrypt(text, passphrase) dengan opsi MD5. Kunci hex mentah dibaca dalam urutan aliran byte seperti CryptoJS; RFC 4503 mencetak test vector-nya sebagai bilangan big-endian, artinya setiap blok 16 byte dibalik.
Kasus Penggunaan Umum
- Mereproduksi output
CryptoJS.Rabbit.encryptuntuk debugging - Membuat data uji untuk aplikasi JavaScript yang memakai Rabbit
- Membandingkan perilaku stream cipher dengan RC4
- Memeriksa vector keystream RFC 4503
Catatan Keamanan
Belum ada pembobolan praktis yang diketahui terhadap Rabbit, tetapi cipher ini jarang dipakai, tidak memiliki perlindungan integritas bawaan, dan sedikit library yang mendukungnya. Gunakan AES-GCM untuk sistem baru.
Pertanyaan Umum
Apakah ini kompatibel dengan CryptoJS?
Ya. Mode frasa sandi dengan EVP_BytesToKey (MD5) cocok dengan CryptoJS.Rabbit.encrypt(text, "passphrase"), dan mode mentah cocok dengan CryptoJS yang memakai WordArray kunci dan IV eksplisit.
Bisakah OpenSSL mendekripsi Rabbit?
Tidak, OpenSSL tidak mengimplementasikan Rabbit. Hanya format kontainernya (Salted__ + salt) yang sama.
Apakah saya butuh IV?
IV bersifat opsional untuk Rabbit, tetapi tanpa IV kunci yang sama selalu menghasilkan keystream yang sama. Mode frasa sandi selalu menurunkan IV baru dari salt acak.