Není to nutně tak, že byste neměli používat MD5, ale spíše to, že byste neměli používat jen MD5, protože vás to zanechává zranitelné vůči útokům rainbow-table (duhová tabulka je tabulka předem vypočítaných hodnot hash – pokud je vaše heslo byť jen vzdáleně běžné nebo jednoduché, útočníkovi stačí vyhledat hash a zná vaše heslo v prostém textu. )
Přinejmenším byste měli ke každému heslu přidat sůl, aby jakákoli existující duhová tabulka byla k ničemu a donutila útočníka vygenerovat celou novou duhovou tabulku jen pro vaši databázi hesel.
Ještě lepší je použít pro každé heslo ve vaší databázi jinou sůl, řekněme uživatelské jméno, se kterým je spojeno, takže útočník ani nemůže vygenerovat duhovou tabulku pro celou vaši databázi a musí prolomit každou položku zvlášť.
MD5 je také velmi rychlý algoritmus. Rychlost je nepřítel, pokud jde o crackování – čím déle trvá generování hashe, tím déle trvá každý pokus, který hacker udělá. Něco jednoduchého, jako je 100x hašování holého textu pokaždé novou dodatečnou solí, by bylo pro uživatele přihlašujícího se na váš web stěží postřehnutelné (pokud vůbec), ale prodloužilo by to dobu potřebnou k hrubému vynucení hesla stejným způsobem. 100krát.
Daleko, mnohem více podrobností zde:http://www.codinghorror.com/blog/ archives/000953.html