O algoritmo RC4 pode ser considerado um gerador de bits infinitos. Trata-se de uma máquina que gera bits pseudo-aleatórios, mas imprevisíveis, sem que eles se enquadrem em uma dízima periódica.
Exemplos de uma dízima seria se os bits gerados fossem 0100010, 01000101, ..., pois se estes bits fossem usados com XOR, haveria repetição de chave. Ao contrário, o RC4 gera uma sequência infinita de bits para os quais não se encontra um padrão de repetição.
Desta forma pode-se usar com segurança o XOR, pois se aplica uma operação XOR de cada bit da mensagem com um bit da chave. Implementa-se, na verdade, o conceito de chave infinita desejável ao XOR (nota: na verdade existem sim dizimas periódicas no RC4, mas ela é tão grande que pode-se considerar como chave infinita).
Mas um problema sério ocorre ao se pensar em como empregar este algoritmo na prática. Se me são gerados bits "aleatórios" para cifrar e eu usar estes bits, como o meu destinatário conseguirá decifrar a mensagem? Ele teria que, magicamente, gerar os mesmos bits "aleatórios" que eu e usá-los de forma sincronizada.
Se eu usei como chave inicial os bits 01001001011001100..., o meu destinatário deve chegar a estes mesmos bits. Não adianta enviar os bits que eu usei para ele pois seria inseguro e porque o número de bits que usei para cifrar uma mensagem M é da mesma quantidade do que da própria mensagem M. Explicando, se a mensagem a ser enviada possui 30 mil bits, a chave "aleatória" que usarei no RC4 tem também 30 mil bits!
Só que estes bits do RC4 não são tão aleatórios assim. Na verdade eles são matematicamente gerados por uma função matemática recursiva. Esta função precisa ser inicializada com uma semente, ou seja, um valor inicial.
Acontece que se duas máquinas RC4 forem inicializadas com a mesma semente, elas irão produzir os mesmos bits "aleatórios". Para que o destinatário possa decifrar minha mensagem, portanto, basta que ele inicialize o seu RC4 com o mesmo número que eu usei para inicializar o meu. Este número, de 64 ou 128 bits, passa a ser a chave k que compartilho com o meu destino, em um esquema demonstrado na Figura 3.
O algoritmo RC4 é atualmente muito empregado, como por exemplo em comunicações SSL (HTTPS, dentre outras). Sua rapidez e a vantagem de ser de fluxo são desejáveis na comunicação.
Qualquer algoritmo de bloco pode ser convertido para um de fluxo em um esquema de realimentação de saída, o que se chama de modo CFB ou modo OFB.