Blowfish
O Blowfish é um algoritmo de chave simétrica de livre distribuição, desenvolvido por Bruce Schneier, que tem como principais características o fato de possuir diversos tamanhos de chave, variando entre 32 e 448 bits, além de uma velocidade superior a do DES e do IDEA. Esse algoritmo, que vem sendo bem aceito, tem aplicações no Nautilus, PGPphone, SSH,entre outros. O Blowfish ainda não foi muito estudado, mas até hoje ainda não foi notificada nenhuma quebra do algoritmo. De fato, o que já se encontrou foi um grupo de chaves que podem ser detectadas, embora não possam ser quebradas. Por essas razões, esse algoritmo vem se popularizando atualmente.
Descrição do Algoritmo A criptografia é feita através de uma função com 16 interações. Apesar do complexo algoritmo de inicialização, o Blowfish tem grande eficiência com os microprocessadores atuais.A cifragem do texto é feita em blocos de 64 ou 128 bits, nos quais os bits não são tratados separadamente, mas em grupos de 32 bits. A fim de aumentar sua eficiência, foi escolhido usar na confecção deste algoritmo funções simples para os microprocessadores, tais como XOR, adição e multiplicação modular. O algoritmo consiste de duas partes, sendo elas a expansão da chave e a criptografia dos dados. A primeira consiste na transformação da chave em subchaves, totalizando 4168 bits. A segunda consiste de 16 fases, sendo que, em cada uma dessas, é feita uma permutação dependente da chave e uma substituição dependente da chave e dos dados.
Criacao das Subchaves
A matriz P consiste de 18 subchaves de 32 bits, com seus elementos variando de P1 ate P18. Utilizam-se também 4 S-Boxes, cada uma constituída de 256 elementos de 32 bits cada. Inicialmente, as S-boxes são preenchidas com os dígitos hexadecimais de pi , exceto o digito inicial 3. O bit mais significativo da fração de pi se torna o mais significativo da primeira subchave. Como exemplo: P1