Tiago Natel de Moura

Arquivo da categoria ‘Criptografia’

Implementando RC4 em PHP

Em Criptografia, PHP, outubro 24, 2009 às 8:25 am

Eu estava precisando de uma criptografia independente de extensões para o PHP para implementar no framework, depois de uma pesquisada decidi eu mesmo fazer o algoritmo do RC4 em PHP.

Uma pequena introdução

RC4 é um algoritmo de criptografia de fluxo muito conhecido e respeitado. Foi desenvolvido por Ron Rivest para a empresa RSA Data Security, portanto é privado, mas em 1994 foi postado anonimamente uma versão do algoritmo compativel com o original. Esta versão é conhecida como ARCFOUR ou ARC4 (Alleged RC4).

Você quer saber quais protocolos utilizam RC4?

Bom antes de ver o code tem um pré-requisito:

Xor Encription Algorithm

A criptografia moderna é dividida basicamente em criptografia simétrica e assimétrica. RC4 é um algoritmo de criptografia simétrico. Os algoritmos simétricos podem ser divididos em algoritmos de blocos e algoritmos de fluxo.
Nos algoritmos simétricos de bloco um tamanho fixo deve ser cifrado de cada vez. Por exemplo, se o algoritmo cifra blocos de 128 bits, somente ocorrerá a cifragem se a mensagem tiver exatamente este tamanho. Ele é mais usado em transações em que os pacotes possuem tamanho fixo. Eles podem ser usados em quaisquer outras aplicações também, mas para cifrar mensagens menores que o tamanho do bloco ele necessita completar a mensagem com um cabeçalho, também chamado de padding.

Os algoritmos de fluxo podem cifrar a mensagem bit-a-bit não importando assim o tamanho da mensagem. O RC4 é um algoritmo simétrico de fluxo, então vamos entender um pouco esse funcionamento.
Num algoritmo de fluxo, os bits de uma mensagem em texto plano são combinados com simples operações de Xor contra uma cadeia de bits pseudo-aleatórios (pseudorandômicos), também chamados keystream.
O Xor está no centro da maioria dos algoritmos modernos, ele sozinho é um tipo de criptografia. Vamos lembrar como funcionam os operadores lógicos AND, OR, NOT e XOR:
Leia o resto deste post »

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.