Het is niet per se dat je MD5 niet moet gebruiken, het is net zo goed dat je niet alleen MD5, omdat dit je kwetsbaar maakt voor regenboogtabelaanvallen (een regenboogtabel is een tabel met vooraf berekende hashwaarden - als je wachtwoord zelfs maar in de verste verte algemeen of eenvoudig is, hoeft de aanvaller alleen de hash op te zoeken en hij kent je leesbare wachtwoord. )
Je moet op zijn minst een salt toevoegen aan elk wachtwoord, zodat een bestaande regenboogtabel nutteloos is, waardoor de aanvaller wordt gedwongen een hele nieuwe regenboogtabel te genereren, alleen voor je database met wachtwoorden.
Het is nog beter om voor elk wachtwoord in uw database een andere salt te gebruiken, bijvoorbeeld de gebruikersnaam waaraan het is gekoppeld, zodat een aanvaller niet eens een regenboogtabel voor uw hele database kan genereren en elk item afzonderlijk moet kraken.
MD5 is ook een zeer snel algoritme. Snelheid is de vijand als het gaat om kraken - hoe langer het duurt om een hash te genereren, hoe langer het duurt voor elke poging die een hacker doet. Iets eenvoudigs als het 100 keer hashen van de leesbare tekst met elke keer een nieuw extra zout zou nauwelijks (of helemaal niet) waarneembaar zijn voor een gebruiker die inlogt op uw site, maar het zou de tijd die nodig is om een wachtwoord brute-forceren met hetzelfde verlengen 100 keer.
Veel, veel meer details hier:http://www.codinghorror.com/blog/ archives/000953.html