MD5 es todavía razonablemente seguro de usar para la mayoría de los casos [*], siempre y cuando se utiliza un buen "sal" para mezclar con la contraseña real antes de que sea encriptada.
Todavía no se conoce otra forma que no sea la fuerza bruta para lograr un "primer ataque previo a la imagen" en MD5, es decir, dado un hash, descubra cuál fue la contraseña original.
La "sal" mencionada anteriormente es necesaria para garantizar que sus contraseñas encriptadas no puedan buscarse trivialmente en una "tabla de arcoíris" u otras listas existentes de "cadena para digerir".
La reciente fuga de contraseña de Linked-In es un buen ejemplo de por qué la sal es importante. No consiguieron saltear las contraseñas de sus usuarios, por lo que muchas de las contraseñas se invirtieron trivialmente porque los valores hash de esas contraseñas ya se calcularon (y en muchos casos se encontraron a través de Google).
Lo que todavía no debes hacer es tener la sal en sí fácilmente determinada. Si el atacante puede determinar cuál es la sal, todas las apuestas están desactivadas, porque entonces los mecanismos de fuerza bruta descritos en el artículo publicado por Florian vuelven a estar disponibles. Una buena sal debería ser larga, y no debería usar la misma sal para cada usuario.
Las únicas debilidades verdaderas hasta el momento se encuentran en MD5 en sí han sido maneras de producir un nuevo archivo que logra como resultado el mismo MD5 como otro archivo, cuando ya conoce el contenido del archivo original. Esto se conoce como un "segundo ataque previo a la imagen", y es irrelevante cuando se considera el uso de un algoritmo hash para el cifrado de contraseñas.
Dicho todo esto, si hay disponible un mejor algoritmo (SHA-2, bcrypt), ¡también puede usarlo!
[*] Sin embargo, ¡yo no usaría MD5 para nada relacionado con el comercio electrónico!
posible duplicado de [PHP puede manejar más de 40 algoritmos de hash. Entonces, ¿por qué md5 es el estándar de facto?] (Http://stackoverflow.com/questions/11062597/php-can-handle-40-hashing-algorithms-so-why-is-md5-the-de-facto-standard) – hakre