No es necesariamente que no debas usar MD5, sino que no debes usar solo MD5, ya que esto lo deja vulnerable a los ataques de la tabla arco iris (una tabla arco iris es una tabla de valores hash precalculados; si su contraseña es remotamente común o simple, el atacante simplemente necesita buscar el hash y sabe su contraseña de texto sin formato. )
Como mínimo, debe agregar una sal a cada contraseña para que cualquier tabla arcoíris existente sea inútil, lo que obliga al atacante a generar una tabla arcoíris completamente nueva solo para su base de datos de contraseñas.
Mejor aún es usar un salt diferente para cada contraseña en su base de datos, digamos el nombre de usuario con el que está asociado, de modo que un atacante ni siquiera pueda generar una tabla de arcoíris para toda su base de datos y tenga que descifrar cada entrada por separado.
MD5 es también un algoritmo muy rápido. La velocidad es el enemigo cuando se trata de descifrar:cuanto más se tarde en generar un hash, más tardará cada intento que haga un hacker. Algo simple como codificar el texto sin formato 100 veces con una nueva sal adicional cada vez sería apenas perceptible (si es que lo es) para un usuario que inicia sesión en su sitio, pero aumentaría el tiempo que lleva forzar una contraseña por la misma razón. 100 veces.
Muchos, muchos más detalles aquí:http://www.codinghorror.com/blog/ archivos/000953.html