Rabbit Encrypt / Decrypt

The eSTREAM Rabbit cipher, implemented to RFC 4503 and verified byte-for-byte against the official test vectors — right in your browser.

Privacy: encryption runs entirely in your browser — key, IV and text never leave this page.

How to use

  1. Enter the text; the key must be exactly 16 characters — leave it empty and Encrypt generates a random 128-bit key for you (Show reveals it). Add an 8-character IV (optional) to reuse the key across messages.
  2. Encrypt to get hex ciphertext; paste it back with the same key/IV and Decrypt to reverse.
  3. Share the IV openly — it is part of the design, not a secret.

Frequently asked questions

What is Rabbit?

A high-performance stream cipher from the eSTREAM portfolio (RFC 4503): a 128-bit key, an optional 64-bit IV, and a 128-bit keystream block generated per round. It is fast in software and has withstood analysis since 2003, though it never saw mainstream adoption like AES.

Why does this implementation follow RFC 4503 exactly?

Because interoperability is the point: the keystream is verified byte-for-byte against all six official test vectors in RFC 4503 Appendix A (three with key setup only, three with IV setup), so ciphertext produced here matches other conformant implementations and vice versa.

What is the IV for and must I use one?

The IV lets you reuse one key for many messages safely: each IV derives a different keystream from the same master state. It is not secret — send it alongside the ciphertext. If you encrypt exactly one message per key, you may leave it empty.

Why does decryption sometimes fail with valid-looking hex?

The output must decode as UTF-8 text. Decrypting with a wrong key or IV yields random bytes, which are usually invalid UTF-8 — the tool rejects them instead of showing mojibake.

Does anything leave my browser?

No. The cipher runs locally in JavaScript; key, IV, and text never leave the page.

Comments