Non è necessariamente che non dovresti usare MD5, tanto è che non dovresti usare solo MD5, poiché ciò ti rende vulnerabile agli attacchi della tabella arcobaleno (una tabella arcobaleno è una tabella di valori hash precalcolati - se la tua password è anche solo remotamente comune o semplice, l'attaccante deve semplicemente cercare l'hash e conosce la tua password in chiaro. )
Per lo meno dovresti aggiungere un salt a ogni password in modo che qualsiasi tabella arcobaleno esistente sia inutile, costringendo l'attaccante a generare un'intera nuova tabella arcobaleno solo per il tuo database di password.
È ancora meglio usare un salt diverso per ogni password nel tuo database, ad esempio il nome utente a cui è associato, in modo che un utente malintenzionato non possa nemmeno generare una tabella arcobaleno per l'intero database e debba decifrare ogni voce separatamente.
MD5 è anche un algoritmo molto veloce. La velocità è il nemico quando si tratta di crackare:più tempo ci vuole per generare un hash, più tempo ci vuole per ogni tentativo che un hacker fa. Qualcosa di semplice come eseguire l'hashing del testo in chiaro 100 volte con un nuovo salt aggiuntivo ogni volta sarebbe appena percettibile (se non del tutto) per un utente che accede al tuo sito, ma aumenterebbe il tempo necessario per forzare una password dello stesso 100 volte.
Maggiori dettagli qui:http://www.codinghorror.com/blog/ archivi/000953.html