Niekoniecznie musisz używać MD5, ale nie powinieneś używać tylko MD5, ponieważ naraża cię to na ataki typu tęczowa tablica (tablica tęczowa to tablica wstępnie obliczonych wartości skrótu – jeśli Twoje hasło jest nawet w przybliżeniu powszechne lub proste, atakujący musi tylko sprawdzić skrót i zna Twoje hasło w postaci zwykłego tekstu. )
Przynajmniej powinieneś dodać sól do każdego hasła, aby jakakolwiek istniejąca tęczowa tablica była bezużyteczna, zmuszając atakującego do wygenerowania całej nowej tęczowej tablicy tylko dla Twojej bazy danych haseł.
Jeszcze lepiej jest użyć innej soli dla każdego hasła w bazie danych, powiedzmy nazwę użytkownika, z którą jest powiązane, aby atakujący nie mógł nawet wygenerować tablicy tęczy dla całej bazy danych i musiał złamać każdy wpis osobno.
MD5 to także bardzo szybki algorytm. Szybkość jest wrogiem, jeśli chodzi o cracking – im dłużej trwa generowanie hasha, tym dłużej trwa każda próba hakera. Coś prostego, jak zahaszowanie tekstu jawnego 100 razy z nową, dodatkową solą za każdym razem, byłoby ledwo zauważalne (jeśli w ogóle) przez użytkownika logującego się do Twojej witryny, ale wydłużyłoby czas potrzebny na brute-force hasła o to samo 100 razy.
O wiele więcej szczegółów tutaj:http://www.codinghorror.com/blog/ archiwa/000953.html