Не е непременно, че не трябва да използвате MD5, колкото, че не трябва да използвате просто MD5, тъй като това ви прави уязвими за атаки с таблица с дъга (таблицата на дъгата е таблица с предварително изчислени хеш стойности - ако паролата ви е дори отдалечено разпространена или проста, нападателят трябва просто да потърси хеша и той знае вашата парола в обикновен текст. )
Най-малкото трябва да добавите сол към всяка парола, така че всяка съществуваща таблица с дъга да е безполезна, принуждавайки нападателя да генерира цяла нова таблица на дъгата само за вашата база данни с пароли.
Още по-добре е да използвате различна сол за всяка парола във вашата база данни, кажете потребителското име, с което е свързано, така че нападателят дори да не може да генерира таблица с дъга за цялата ви база данни и трябва да разбива всеки запис поотделно.
MD5 също е много бърз алгоритъм. Скоростта е врагът, когато става въпрос за кракване – колкото повече време отнема генерирането на хеш, толкова повече време отнема всеки опит на хакера. Нещо просто като хеширане на обикновения текст 100 пъти с нова допълнителна сол всеки път би било едва забележимо (ако изобщо) за потребител, който влиза във вашия сайт, но ще увеличи времето, необходимо за грубо налагане на парола със същото 100 пъти.
Далеч, много по-подробно тук:http://www.codinghorror.com/blog/ archives/000953.html