Moin!
Ich ersuche Dich also, Deinen Algorithmus zu verbessern.
Das ist ohne weitere Bedingung unterstützenswert.
Deine Umsetzung allerdings nicht. SHA1 und MD5 sind keine für Passwort-Hashing geeigneten Algorithmen. Auch dann nicht, wenn man sie eine Million mal anwendet. Und erst recht nicht, wenn man "nur" 5000 Runden konfiguriert.
Der aktuelle Stand der Forschung ist derzeit schon etwas weiter, als dieser über zwei Jahre alte Artikel. Die Grundtendenz ist richtig: Wenn man kein unauslesbares Sicherheits-Hardware-Modul hat (mit dessen Zerstörung dann auch alle Hashes nicht mehr wiederherstellbar sind), hilft nur möglichst aufwendige CPU- und RAM-Power.
Aktuell wird "scrypt" als geeignet bewertet (es ist aber noch in der Erprobungsphase, und in PHP nicht implementiert), "bcrypt" kommt auf Platz 2 (und ist freundlicherweise in PHP verfügbar).
Die Implementierung ist auch recht simpel: Ab PHP 5.5 gibts dafür Funktionen, die man im einfachsten Fall so simpel wie damals "md5()" benutzen kann - und wer ältere Versionen von PHP einsetzt: Ab PHP 5.3.7 ist diese Kompatibilitäts-Bibliothek einsetzbar (frühere PHP-Versionen haben vermutlich einen Security-Bug in der bcrypt-Implementierung, der den sicheren Einsatz verhindert).
- Sven Rautenberg