---
name: "libressl-RC4"
section: "3"
platform: "linux"
package: "libressl"
version: "4.4.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libressl-RC4"
---

# libressl-RC4(3)

RC4 encryption

## NAME

**RC4\_set\_key**, **RC4** – RC4 encryption

## SYNOPSIS

Crypto Library (libcrypto, -lcrypto)

**#include \<openssl/rc4.h\>**

*void*\

**RC4\_set\_key**(*RC4\_KEY \*key*, *int len*, *const unsigned char \*data*);

*void*\

**RC4**(*RC4\_KEY \*key*, *unsigned long len*, *const unsigned char \*indata*, *unsigned char \*outdata*);

## DESCRIPTION

This library implements the alleged RC4 cipher, which is described for example in "Applied Cryptography". It is believed to be compatible with RC4\[TM\], a proprietary cipher of RSA Security Inc.

RC4 is a stream cipher with variable key length. Typically, 128-bit (16-byte) keys are used for strong encryption, but shorter insecure key sizes have been widely used due to export restrictions.

RC4 consists of a key setup phase and the actual encryption or decryption phase.

**RC4\_set\_key**() sets up the *RC4\_KEY* *key* using the *len* bytes long key at *data*.

**RC4**() encrypts or decrypts the *len* bytes of data at *indata* using *key* and places the result at *outdata*. Repeated **RC4**() calls with the same *key* yield a continuous key stream.

Since RC4 is a stream cipher (the input is XOR'ed with a pseudo-random key stream to produce the output), decryption uses the same function calls as encryption.

## SEE ALSO

blowfish(3), EVP\_EncryptInit(3), EVP\_rc4(3)

## HISTORY

**RC4\_set\_key**() and **RC4**() appeared in SSLeay 0.4 or earlier and have been available since OpenBSD 2.4.

## BUGS

This cipher is broken and should no longer be used.
