O algoritmo de sintetização de mensagem MD5 é uma função hash amplamente utilizada que produz um valor de hash de 128 bits expresso em 32 caracteres.[1] Embora o MD5 tenha sido projetado inicialmente para ser usado como uma função hash criptográfica, foi constatado que ele sofre de extensas vulnerabilidades. Ele ainda pode ser usado como uma soma de verificação para checar a integridade de dados,[2] mas apenas contra corrupção não intencional. Ele permanece adequado para outros fins não criptográficos, por exemplo, para determinar a partição para uma chave específica em um banco de dados particionado.[3]
O MD5 foi projetado por Ronald Rivest em 1991 para substituir uma função hash anterior MD4,[4] e foi especificado em 1992 como RFC 1321.
Um requisito básico de qualquer função de hash criptográfico é que seja computacionalmente inviável encontrar duas mensagens distintas com hash para o mesmo valor. O MD5 falha com esse requisito catastroficamente; essas colisões podem ser encontradas em segundos em um computador doméstico comum.
As fraquezas do MD5 foram exploradas em campo, principalmente pelo malware Flame em 2012. O CMU Software Engineering Institute considera o MD5 essencialmente "criptograficamente quebrado e inadequado para uso posterior".[5] Em 2012, o malware Flame explorou os pontos fracos do MD5 para falsificar uma assinatura digital da Microsoft.
Em 2008, Ronald Rivest e outros, publicaram uma nova versão do algoritmo o MD6 com hash de tamanhos 224, 256, 384 ou 512 bits. O algoritmo MD6 iria participar do concurso para ser o novo algoritmo SHA-3,[6][7] porém logo depois removeu-o do concurso por considerá-lo muito lento, anunciando que os computadores de hoje são muito lentos para usar o MD6.
A partir de 2019, o MD5 continua sendo amplamente utilizado, apesar de suas fraquezas e depreciação bem documentadas por especialistas em segurança.[8]