Skip to content
Tezmy Tools

Rabbit Encrypt and Decrypt

Encrypt and decrypt text with the Rabbit stream cipher (CryptoJS compatible)

Direction

Key type

Each press of Encrypt uses a new random salt, so the output changes every time but always decrypts to the same text.

Runs in your browser. Nothing is uploaded.

About the Rabbit Encrypt and Decrypt

Rabbit is a fast stream cipher from 2003 and one of the four software ciphers chosen by the European eSTREAM project. It is best known today through the CryptoJS library, which many websites and apps use for encryption in JavaScript. This tool encrypts and decrypts text with Rabbit using the same code as CryptoJS, so results are interchangeable with CryptoJS.Rabbit. Use a passphrase for the familiar U2FsdGVkX1 Base64 format, or a 16-byte hex key and an optional 8-byte IV for raw ciphertext in hex.

Updated October 2026

How to use the Rabbit Encrypt and Decrypt

  1. 1Choose Encrypt or Decrypt.
  2. 2Choose Passphrase or Hex key and IV.
  3. 3Enter the passphrase, or the key and IV.
  4. 4Type the text, or paste the encrypted text.
  5. 5Press Encrypt (passphrase mode) or read the live result, then copy it.

How a stream cipher works

Rabbit builds a long key stream from the key and IV, then XORs it with the message one byte at a time. Decryption is the same operation: XOR the ciphertext with the same key stream. That is why the key and IV must never be reused for two messages; if they are, an attacker can combine the two ciphertexts and remove the key stream.

Passphrase mode in detail

CryptoJS turns a passphrase into a key and IV with OpenSSL's EVP_BytesToKey function and a random 8-byte salt. The output is Base64 of the text Salted__, the salt and the ciphertext.

  • Starts with U2FsdGVkX1
  • Key: 128 bits, IV: 64 bits
  • Salt: 8 random bytes per message

Raw key mode

Raw mode is for developers testing their own code. Enter the key as 32 hex digits and, if your code uses one, the IV as 16 hex digits. The output is the ciphertext in hex, the same length as the text in bytes, because stream ciphers don't add padding.

When to use Rabbit today

Use it to read or produce data for an existing system built on CryptoJS.Rabbit, or to learn about stream ciphers. For new projects, choose AES-GCM, which our AES Encrypt tool supports, because it also protects against tampering.

Rabbit compared with other ciphers

Rabbit, RC4 and Salsa20 are all stream ciphers, while AES and DES are block ciphers. RC4 is now considered broken, Salsa20 and its successor ChaCha20 are widely used in TLS and messaging apps, and Rabbit sits in between: respected, fast, but rarely chosen for new systems. Our XOR and RC4 tool lets you compare how simple stream ciphers behave.

Phone and computer

Both modes work on phones and computers; the result box and copy button sit under the input on small screens. For a widely used cipher use AES Decrypt, and for a simple scramble the XOR and RC4 Cipher.

Features

  • Encrypt and decrypt in one place
  • CryptoJS-compatible results
  • Passphrase mode with random salt
  • Raw 128-bit key and 64-bit IV mode
  • Clear errors for wrong keys
  • Private: runs in your browser

Frequently asked questions

What is the Rabbit cipher?

A stream cipher that turns a 128-bit key and a 64-bit IV into a stream of pseudo-random bytes, which are combined with the message using XOR. It was designed for speed in software.

Is Rabbit secure?

No serious attacks on Rabbit are known, and eSTREAM selected it in 2008. It doesn't detect tampering on its own, though, so modern systems prefer AES-GCM or ChaCha20-Poly1305.

Why does the passphrase output change every time?

A random salt is used for each encryption, so the Base64 differs each time, but every version decrypts to the same text with the passphrase.

Can I decrypt text from CryptoJS.Rabbit.encrypt?

Yes. Paste the Base64 output (it starts with U2FsdGVkX1) and the same passphrase.

Will this match other Rabbit libraries?

It matches CryptoJS. Some other libraries order the bytes of the key stream differently from CryptoJS, so their raw outputs may not match even with the same key.

Why might a wrong passphrase still show text?

A stream cipher has no padding to check, so in rare cases a wrong passphrase produces bytes that happen to be readable. If the result looks like nonsense, the passphrase is wrong.

Related tools