Criptografia rc4
RC4 é um famoso algoritmo de cifra de fluxo utilizado no Secure Socket Layers (SSL). O sistema funciona basicamente por permutações e somas de valores inteiros, o que torna este algoritmo muito simples e rápido. De uma forma geral, o algoritmo consiste em utilizar um array de permutação S que a cada utilização tem os seus valores permutados e misturados com a chave K. Esse array S é utilizado para alterar valores contidos na mensagem de entrada input, provocando uma perturbação pseudo-aleatória nos valores. Esta chave K, utilizada somente na inicialização do array, pode ter até 256 bytes (2048 bits). Neste algoritmo, ao passar a mensagem cifrada pela rotina usando a mesma chave, podemos obter de volta a mensagem original [10].
O algoritmo é dividido em duas partes. O key-scheduling (inicialização) e a cifragem/decifragem propriamente dita. Veja abaixo uma visão simples do algoritmo.
Key-scheduling
O algoritmo key-scheduling é usado para inicializar a permutação no array S. O tamanho da chave e pode variar entre 1 e 256 bytes. Primeiro, S é inicializado com tamanho 256:
Na primeira repetição:
O array S é preenchido com os valores de 0 à 255.
Na segunda repetição:
É somado o valor de j, o valor de S apontado por i e o valor de K (chave) com tamanho keylength apontado por i e armazenado na variável j.
Troca os valores entre S[i] e S[j].
Cifragem/decifragem
A transformação ocorre com os seguintes passos:
Sendo i e j índices de um array, a rotina incrementa em 1 ao índice i.
Adiciona o valor de S apontado por i com j e armazena o resultado em j.
Troca os valores entre S[i] e S[j].
Sendo k outro índice de um array, a saída é então calculada fazendo-se a operação XOR bit-a-bit entre o valor de S apontado por S[i] + S[j] e a mensagem original apontado por