sábado, 17 de outubro de 2009

Criptografia - 1ª Parte - Monogâmica Monoalfabética

A criptografia é um assunto que desperta interesse em grande parte dos loucos da tecnologia, e também de todas as pessoas de uma forma geral. É claro que a profundidade no estudo é que vai determinar o grau de interesse de cada um. O importante é que a criptografia é algo realmente interessante (se repito tanto a palavra "interessante" deve ser mesmo) e resolvi falar sobre o assunto nesse artigo.

A criptografia hoje é vista principalmente como algo pertencente à tecnologia, mas surgiu a muitos anos atrás com o simples intuito de trocar mensagens entre duas pessoas, a fim de que, se alguém não autorizado por ventura tivesse acesso à mensagem, não pudesse entender o seu conteúdo. E esse é o objetivo da criptografia.

Com a evolução dos meios de comunicação, principalmente a internet, surgiram os criminosos virtuais que se preocupam em roubar informações, e o canal mais propício para isso é a internet. Porém os ambientes fora da rede mundial também correm riscos. Dados confidenciais armazenados em um computador sem nenhum tipo de cifragem dos dados, podem ser lidos e compreendidos por qualquer pessoa que tenha acesso à essa máquina.

Agora chega de "blá, blá, blá..." e vamos direto ao ponto. O uso da criptografia mais simples é o tipo monogrâmica monoalfabética. Nesse tipo de criptografia o algoritmo criptográfico analisa caracter por caracter (monogrâmica) e substitui cada caracter por outro caracter equivalente ao alfabeto cifrante.

O nosso alfabeto: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Poderíamos cifrar uma mensagem trocando cada letra da mensagem por sua correspondente no alfabeto três letras à frente, por exemplo, trocar o A por D, B por E, e assim por diante...

Por exemplo:
A mensagem: Essa e a primeira parte do artigo sobre criptografia
O resultado: Hvvd h d sulphlud sduwh gr duwljr vreuh fulswrjudild

Notem que os espaços não foram criptografados, mas é opcional. Também optei por não utilizar acento, nesse caso até seria interessante o uso. Mas estou disponibilizando o algoritmo utilizado para fazer essa "mágica" abaixo, em linguagem C, Javascript e PHP só para você testar e compreender melhor na prática como funciona.

Algoritmo completo em C:

/*Criptografia - 1ª parte - Monogâmica Monoalfabética*/
#include
#include
#include
char *cifrar(char *mensagem) {
int i;
char *result;
result = (char *) malloc(sizeof(char) * strlen(mensagem));
for (i=0;i<strlen(mensagem);i++) {
if (mensagem[i] != ' ' && mensagem[i] != '\0')
result[i] = mensagem[i]+3;
else
result[i] = mensagem[i];
}
return result;
}
int main() {
char mensagem[100];
printf("Informe a mensagem a ser cifrada (no maximo 100 caracteres): ");
gets(mensagem);
printf("\nEssa e a mensagem cifrada: \n%s",cifrar(mensagem));
exit(0);
}
Algoritmo em Javascript (Função):

function cifrar(mensagem) {
var result = "";
for (var i=0;i<mensagem.length;i++) {
if (mensagem.charAt(i) != ' ')
result += String.fromCharCode(mensagem.charCodeAt(i)+3);
else
result += mensagem.charAt(i);
}
return result;
}

Algoritmo em PHP:

function cifrar($mensagem) {
$mensagem = str_split($mensagem);
for ($i=0;$i<count($mensagem);$i++) {
if ($mensagem[$i] != ' ')
$result .= chr(ord($mensagem[$i])+3);
else
$result .= $mensagem[$i];
}
return $result;
}


Bom, por enquanto é isso, continuaremos no próximo episódio, não vou fazer como o artigo sobre GPG que está a quase dois anos com a promessa de que teria uma nova parte (por falar nisso, vou escrever sobre isso na semana que vem, é um assunto relacionado a criptografia).
Podem testar os algoritmos, se precisarem do código completo com html em php e javascript é só pedir, todos os códigos são livres :D

No mais, um site que tem muuuita coisa sobre criptografia: http://www.numaboa.com.br. É um pouco complicado de se ambientar lá, mas quando se acostumar vai se fartar de tanto conteúdo.

Até a próxima.

Nenhum comentário: