Не обязательно, что вы не должны использовать MD5, поскольку вы не должны использовать просто MD5, так как это делает вас уязвимым для атак с радужным столом (радужный стол - это стол предварительно вычисленные значения хеша - если ваш пароль хотя бы удаленно распространен или прост, злоумышленнику нужно просто просмотреть хеш, и он знает ваш пароль в незашифрованном виде.)
По крайней мере, вы должны добавить соль к каждому паролю, чтобы любая существующая радужная таблица была бесполезна, заставляя злоумышленника сгенерировать целую новую радужную таблицу только для вашей базы паролей.
Еще лучше использовать разные соли для каждого пароля в вашей базе данных, скажем, имя пользователя, с которым он связан, так что злоумышленник не может даже создать радужную таблицу для всей вашей базы данных и должен взломать каждую запись отдельно.
MD5 также очень быстрый алгоритм. Скорость - это враг, когда дело доходит до взлома - чем больше времени требуется для создания хэша, тем больше времени требуется для каждой попытки хакера. Что-то простое, например, хеширование простого текста 100 раз с новой дополнительной солью каждый раз, едва ли будет восприниматься (если вообще) пользователем, входящим на ваш сайт, но это увеличит время, необходимое для взлома пароля тем же 100 раз.
Гораздо более подробно здесь: http://www.codinghorror.com/blog/archives/000953.html