MD5 (Message-Digest algorithm 5) é um algoritmo de “hash” de 128 bits unidirecional. O MD5 é um método em é possível transformar uma palavra num MD5 hash, porém com um MD5 hash nunca é possível encontrar a palavra que o originou.
O que isto significa?
O MD5 é muito útil quando você quer arquivar senhas. Pois uma senha como por exemplo “12345678” gerá o MD5 hash “25d55ad283aa400af464c76d713c07ad” (sempre sem aspas) porém se alguém descobrir o MD5 hash, será incapaz (teoricamente) de encontrar a senha que o gerou.
Uso na prática
Um administrador de site que prese pela autenticidade das operações pede a seu usuário que crie uma senha. Ele a digita, e ao mandar salvar o script irá gerar o MD5 hash e apenas este será arquivado. Assim, mesmo que o administrador entre em seu banco de dados e vizualise a senha, o que ele irá ver é apenas o MD5 hash. Então quando seu internauta volta no site, e ditiga a senha, o script irá gerar o MD5 hash como ocorreu na primeira vez, e irá comparar com o que está arquivado. Se o MD5 Hash gerado for igual ao que está arquivado o acesso será permitido, se for diferente, será negado.
Exemplos
Abaixo alguns caracteres "palavras", ou senhas, e o MD5 hash
|
Caractere Texto |
MD5 hash |
|
12345678 |
25d55ad283aa400af464c76d713c07ad |
|
silviolobo |
e8571a7f8d9d0e95b2448784e0b02396 |
|
Amor |
5da2297bad6924526e48e00dbfc3c27a |
|
Fé |
01e973a860fe82b0bae4c529c857348c |
|
a |
0cc175b9c0f1b6a831c399e269772661 |
MD5 em caracteres longos, arquivos, o que muda?
Os MD5 podem ser usados para assinatura de programas, ou arquivos. UM exemplo de MD5 longo.
|
Pai nosso que estais no Céu, santificado seja o Vosso Nome, venha a nós o Vosso reino, seja feita a Vossa vontade, assim na terra como no Céu. O pão nosso de cada dia nos dai hoje; perdoai-nos as nossas ofensas, assim como nós perdoamos a quem nos tem ofendido, e não nos deixeis cair em tentação, mas livrai-nos do mal. Amém. |
|
MD5 hash: 99d155a830d49cab342b6e539156c6c1 |
Vou retirar o acento do “amém” e verificar como fica o MD5 hash
|
Pai nosso que estais no Céu, santificado seja o Vosso Nome, venha a nós o Vosso reino, seja feita a Vossa vontade, assim na terra como no Céu. O pão nosso de cada dia nos dai hoje; perdoai-nos as nossas ofensas, assim como nós perdoamos a quem nos tem ofendido, e não nos deixeis cair em tentação, mas livrai-nos do mal. Amem. |
|
MD5 hash: a0d86fea9f6c226fb357863616e82751 |
Conservei o texto idêntico, mas na primeira em que a palavra “amém” esteve acentuada o MD5 hash foi “99d155a830d49cab342b6e539156c6c1” no segundo caso onde foi colocado “amém”, o MD5 hast foi “a0d86fea9f6c226fb357863616e82751”
Um único acento modifica o MD5 hash, assim ele é ideal para verificação da integridade de arquivos e documentos. E você encontrará diversos arquivos na internet, com imagens de disco (Linux, programas) que juntamente com o arquivo você encontrará o MD5 que será usado para comparar que seu arquivo “baixado” está integro.
Segurança! É possível recuperar o “original” que gerou o MD5?
Teoricamente, não! Mas existem na internet ferramentas que servem como Dicionários. Assim, cada vez que uma pessoa digita uma palavra, ele gera o MD5 hash, e guarda no banco de dados. No futuro quando alguém digita um MD5 hash, ele busca no banco de dados e exibe a palavra que foi registrada no passado.
Um exemplo é http://md5.networkcore.eti.br/
Se tiver uma sorte monstruosa você conseguirá encontrar alguma senha. Porém nem perca tempo tentando recuperar um arquivo corrigindo falhas de integridade.
Caracteristicas
O md5 hash é uma string alfa-numérica de 32 caracteres.
Facilmente usado no PHP com a Função md5(); Exemplo: md5($string).
Dúvida cruel: Existe a possibilidade de que duas MD5 hash sejam iguais?
Sim, mas seria algo rarissímo, extremamente raro, além do mais isto não chega a ser um problema dado a finalidade dele.
Notas: MD5 foi desenvolvido pela RSA Data Security, ele é a grosso modo um cálculo complexo feito com cada um dos caracteres apresentados, seja de uma senha ou do código do programa ou arquivo; MD5 hash é como chamamos o resultado deste cálculo.


