Z wielokrotnym hashowaniem jest tak, że stosowanie czegoś takiego:
jest w gruncie rzeczy bez sensu. Natomiast wielokrotne hashowanie, zakładając, że "wielokrotne" jest rzędu tysięcy, pomaga zabezpieczyć się przed atakami brute force na wykradziony hash.
MD5 jest bardzo szybkim algorytmem, więc nieskomplikowane hasło nowoczesny komputer jest w stanie złamać w czasie, gdy będę sobie parzył herbatę. Natomiast nieskomplikowane hasło hashowane 3000 razy wydłuży czas łamania 3000 razy, czyli łamanie może przestać być to opłacalne.
Minus jest taki, że ludzie którzy uważają, że stosowanie ' zamiast " przyspieszy ich skrypt PHP raczej niechętnie będą robili hash tysiące razy.
Plus natomiast, że można pozwolić użytkownikom na mniej skomplikowane hasła. To jest bardzo ważne, bo 99% społeczeństwa nie lubi zapamiętywać skomplikowanych haseł i gdy na stronce, na której co najwyżej można napisać komentarz i wstawić fotkę wymaga się od nich małych, dużych liter, cyfr, znaków i Bóg wie czego jeszcze, to podadzą takie hasło jak mają na allegro albo do banku

Z tego co pamiętam, to są nawet algorytmy hashujące specjalnie zaprojektowane, żeby były powolne, ale nie mogę sobie nazw przypomnieć.
Natomiast sól zabezpiecza przed rainbow tables. Ogólnie powinno się stosować losową, unikalną sól dla każdego hasła (nic przesadnie skomplikowanego, zwykły int wystarczy) i trzymać ją w bazie danych. Przez to dla każdej soli trzeba by wygenerować osobną tęczową tablicę, ważącą dziesiątki GB, co również przestaje być opłacalne.
Cytat
wielokrotne hashowanie zwiększa szansę wystąpienia kolizji, więc jaki tego sens ?
Z tego co się dowiedziałem, od mądrzejszych ode mnie ludzi, to po pierwsze przyjmuje się, że jeżeli ktoś ma dostęp do bazy danych strony XYZ, to już nie będzie się włamywał na konta jej użytkowników. Będzie natomiast próbował odzyskać oryginalne hasło i użyć je na innych stronach (banki, paypal, allegro, bukmacherzy, poker online, cokolwiek). Więc znalezienie kolizji w sumie niewiele daje - potrzebny jest oryginał, bo inne strony mogą używać innego algorytmu, czy innej soli.
Ponadto szansa wystąpienia kolizji się co prawda zwiększa, ale nie aż tak znacznie, żeby brać to pod uwagę.