terça-feira, 20 de março de 2012

Cifra de Bacon

A esteganografia é um assunto que me interessou desde que o descobri em livros de matemática. Escrever mensagens em código pode ser bom para brincar ou crucial, como em senhas de nossos e-mails, contas bancárias e outras. Nestes últimos casos, a encriptação é feita pelo computador, utilizando números primos. Um código muito interessante que pode ser aprendido com pouco esforço, é a Cifra de Bacon. Ela foi criada pelo filósofo inglês Francis Bacon, que deu a vida pela ciência. Este método de criptografia (esconder mensagens dentro de outras mensagens), pode se utilizar de números binários.

Número Binários
No nosso sistema de numeração comum, o decimal, podemos utilizar os algarismos 0 a 9 para formar os números. No sistema binário podemos utilizar apenas 0 e 1. É muito mais simples de fazer contas (multiplicar por 10, 100, 11 é mais fácil).

Quando trabalhamos com o sistema decimal, somando de 1 em 1, ao chegar no 9 e somarmos mais 1, colocamos 1 e um 0, ficando 10. Ou seja, 9+1=10. O 9 está em negrito para destacar que é o último algarismo do sistema decimal.

Em binários, procedemos de maneira semelhante. Para somar 1+1, fazemos o seguinte: como não existe o algarismo 2 em binários, 1 é o último dígito, ao somar 1 com 1, colocamos 1 e 0, ficando 10. Assim 1+1=10. Na sequência, 10+1=11. 11+1=100. Note que neste último caso, 11+1 seria 12. Como não tem 2 em binários, colocamos 0 e passamos 1 para lá (como aprendemos a somar no Ensino Fundamental). Mas passando 1 para lá, ficaríamos com 2. Novamente, colocamos 0 e passamos 1 para lá. Por isso o resultado é 100.

O processo se repete. Temos a seguinte tabela:

DecimalBinário
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100

Uma das formas de se escrever utilizando a Cifra de Bacon, é associar cada letra a um número binário com 5 dígitos (ao invés de escrever 1, colocamos 00001 e 00010 e não 10). Em outras palavras: B é a segunda letra. Olhamos para números decimais e colocamos 00010 (porque 2 em binário é 10). H é a oitava letra. Colocamos então 01000 (que é 8 escrito em binário). Mais uma tabela:


A 00001 - K 01011-U10101
B 00010 - L 01100-V10110
C 00011-M01101-W10111
D 00100-N01110-X11000
E 00101-O01111-Y11001
F 00110-P10000-Z11010
G 00111-Q10001-
H 01000-R10010-
I 01001-S10011-
J 01010-T10100-

Logo, podemos escrever cada letra como um conjunto de 5 dígitos. Mas é claro que se mandássemos uma mensagem cheia de números, qualquer um entenderia que é um código e provavelmente poderia até procurar como desvendá-lo. Felizmente, tem uma maneira mais convincente de escrever este código. Então, façamos da seguinte forma: 0 será letra minúscula, 1 letra maiúscula qualquer. Por exemplo:

manEIrA DE EscOndeR noSSA sAGEM

Sabendo que está escondida com a Cifra de Bacon, devemos agrupar a cada 5 dígitos e atribuir 0 para minúsculas e 1 para maiúsculas.

manEI rADEE scOnd eRnoS saMEN sAGEM
00011 01111 00100 01001 00111 01111

Daí, é só comparar com a tabela acima.

00011 01111 00100 01001 00111 01111
C O D I G O

Claramente, um dos inconvenientes é que a mensagem criptografada fica com cinco vezes o tamanho da original. Mas a vantagem é que podemos variar por exemplo: 1 letras com negrito, 0 sem; itálico e várias outras formas, como mesmo A para 0 e B para 1, criando mensagens de ABAB...

É possível criar um aplicativo Java para ser incorporado, que cria automaticamente mensagens de acordo com um texto inserido. Não faremos isto nesta semana, mas futuramente será inserido aqui na postagem.

Por fim, uma mensagem para vocês descriptografarem:

o estUdO CoMpensA. PaCiêncIa É bEM aMarga, MAs Seus FruTos sÃO doceS.

Nenhum comentário:

Postar um comentário

Obrigado por comentar.