Sie sollten einen Hash-Benutzername, Passwort und Salz zusammen verwenden, wie:
hash(length(username)+"_veryuniquesalt4rtLMAO"+username+password)
auf diese Weise, Ihre Datenbank zu bestehenden Rainbow-Tabellen nicht verwundbar, weil das Salz, und mit dem Benutzernamen entlang gehasht Mit dem Passwort ist es auch nicht möglich, eine Rainbow-Tabelle für Ihre spezifische Hash-Methode zu erstellen.
Die Verwendung eines "langsamen" Hashalgorithmus sichert die Passwörter besser, als ob sie komplexer wären, aber es ist ein Kompromiss, sobald Sie sich für ein bestimmtes Maß an Langsamkeit entschieden haben, können Sie nicht einfach zurückskalieren brauche die Leistung für andere Dinge.
Es ist auch möglich, die langsame Hashing-Clientseite mit JavaScript zu verwenden, so dass es kein Leistungsproblem sein wird, aber die Methode erfordert natürlich, dass JavaScript aktiviert ist.
Egal, was Sie wählen, ein wenig Slowhashing ist weit besser als nichts, verwenden Sie 1 Millisekunde statt 1 Mikrosekunde und Ihr Schutz ist 1000-mal stärker.
Sie können bcrypt verwenden, oder Sie können einen konventionellen Hashing-Algorithmus eine Menge zusätzlicher Arbeit leisten, stellen Sie nur sicher, dass die zusätzliche Arbeit nicht primär String-Verkettung ist.
Am Ende, besser nicht Ihre Datenbank gestohlen werden, eine Menge von Passwörtern sind so schwach, dass sie leicht extrahiert werden, egal was Sie tun.
Dank Martin, ich verstehe das. Es war eine knappe Frage und verdient eine enge Antwort. – Hissohathair