É comum encontrar na internet cursos de PHP e MySQL que incentivam a utilização da função md5 como opção viável para a criptografia de senhas. Na maioria dos casos, o instrutor sabe que isso não deve ser feito em ambientes de produção (quando o seu site está no ar, funcionando) mas o faz como medida educacional para simplificar o entendimento do conceito final: senhas devem ser criptografadas antes de serem salvas (no caso de um vazamento ou hack os atacantes não consigam visualizá-las).

Ok. Mas por que não usar o MD5, se ele cumpre essa função?

MD5 é rápido demais

Ué, mas isso não é bom? Nesse caso não. O motivo é que ao mesmo tempo que você consegue criptografar uma string rapidamente, os hackers também. Logo, um ataque de força bruta pode calcular milhões de combinações possíveis e tentar cada uma até acertar.

MD5 não é collision-resistant

Resumindo: é possível que duas strings diferentes produzam o mesmo hash md5. Se você tem, por exemplo, um certificado SSL assim criptografado, alguém poderia criar uma cópia com conteúdo diferente e injetá-la na sua aplicação.

Existem vários bancos de dados de senhas MD5 na internet

Quebrando a criptografia md5 usando sites do Google

Quebrando a criptografia md5 usando sites do Google

Uma pesquisa no Google usando o termo “md5 decrypt” vai te levar à milhares de sites (como esse) onde você digita uma hash md5 e eles te dizem qual a palavra que a produziu. Ou seja, você não precisa ser um grande especialista pra quebrar a segurança.

Quando usar MD5?

Isso depende muito do tipo de aplicação que você costuma construir, mas na maioria dos casos, a melhor aplicação da criptografia MD5 é na verificação da integridade de arquivos.

Exemplo: sua aplicação precisa enviar um arquivo dividido em várias partes de um servidor para o outro. Depois de juntar as partes do arquivo no novo hospedeiro, como saber se nenhuma parte está faltando ou foi alterada no caminho? Bom, se o arquivo original criptografado produz a mesma hash md5 que o novo arquivo Frankenstein, então eles são iguais. Simples assim!