Não é necessariamente que você não deva usar MD5, mas sim que você não deve usar apenas MD5, pois isso deixa você vulnerável a ataques de tabela de arco-íris (uma tabela de arco-íris é uma tabela de valores de hash pré-computados - se sua senha for remotamente comum ou simples, o invasor precisará apenas procurar o hash e saberá sua senha de texto simples. )
No mínimo, você deve adicionar um sal a cada senha para que qualquer tabela arco-íris existente seja inútil, forçando o invasor a gerar uma nova tabela arco-íris inteira apenas para seu banco de dados de senhas.
Melhor ainda é usar um sal diferente para cada senha em seu banco de dados, digamos, o nome de usuário ao qual está associado, para que um invasor não possa gerar uma tabela de arco-íris para todo o banco de dados e tenha que quebrar cada entrada separadamente.
MD5 também é um algoritmo muito rápido. A velocidade é o inimigo quando se trata de cracking - quanto mais tempo leva para gerar um hash, mais tempo leva para cada tentativa de um hacker. Algo simples como fazer o hash do texto simples 100 vezes com um novo sal adicional a cada vez seria quase imperceptível (se for o caso) para um usuário fazendo login no seu site, mas aumentaria o tempo necessário para forçar uma senha pela mesma 100 vezes.
Muito, muito mais detalhes aqui:http://www.codinghorror.com/blog/ archives/000953.html