Cryptography
Encrypt text with the RC4 stream cipher
RC4 Encrypt runs the RC4 stream cipher over your text with a key derived from a passphrase and returns OpenSSL-style salted Base64. It exists for legacy work: reproducing ciphertext from old systems, replaying captures that used RC4 and checking fixtures from tools that default to it. As a stream cipher it adds no padding, so the output length follows the plaintext once the Salted__ header is removed. RC4 is broken, so treat the output as test material.
How to use RC4 Encrypt
- Open RC4 Encrypt in the Toolbox101 app.
- Type or paste the plaintext into the
Messagebox. The ciphertext is the same length plus a 16-byte salt header. - Type the passphrase into the
Passphrasebox. The tool derives the RC4 key from it, so the same phrase is needed to decrypt. - Read the ciphertext in the
Outputbox; it updates as you edit either field and always starts withU2FsdGVkX1. - Click
Copyto take the ciphertext, and keep the passphrase for the RC4 Decrypt step.
Worked example
RC4 Encrypt gives a different result every time, so yours will differ. This is one run:
Input
RC4 round-trip worksKey
rc4-demo-keyOutput
U2FsdGVkX1+l1tXDqTnUFpVyqv4GlG2V4ifKBzt1IoRj5rSCFrequently asked questions
Is RC4 safe to use for encryption?
No. RC4 has been broken in practice: WEP was cracked in minutes, and RFC 7465 prohibits the cipher in TLS because of biases in its keystream. Use this tool only to generate or inspect legacy test data, and choose AES Encrypt here for anything that must stay confidential.
Why would I still need RC4 ciphertext?
Legacy formats and protocol fixtures still reference RC4: old TLS 1.0 captures, WEP-era test scripts, and third-party integrations written before the cipher was banned. Reproducing their ciphertext helps you validate decryptors, migrate stored payloads, and prove old code paths no longer run.
How does the passphrase become an RC4 key here?
The same OpenSSL-style derivation used across the cipher tools here: an MD5-based EVP_BytesToKey pass over the passphrase plus a random 8-byte salt produces a 256-bit key, and the salt is stored in the output. That is why the ciphertext starts with the Salted__ marker and differs on every run.
How is RC4 different from the Rabbit cipher?
Both are stream ciphers, but Rabbit is a later design with a 128-bit key, a 64-bit IV, and no known practical attack, while RC4’s keystream biases are documented and exploitable. Rabbit never reached RC4’s deployment, though, so you meet RC4 far more often in legacy data.