Bcrypt-Generator und -Prüfer
Erzeugen Sie den bcrypt-Hash eines Passworts für den Seed oder die Migration Ihres Testnutzers, oder prüfen Sie, ob ein Passwort zum Hash in der Datenbank passt. Einstellbare Kosten, Präfixe $2b$, $2a$ und $2y$, und die Berechnung läuft im Hintergrund, ohne die Seite zu blockieren.
Für Testdaten, Seeds und Login-Debugging gedacht. Das Passwort ist das, was Sie eingeben: Diese Seite erzeugt keine Passwörter.
Jeder weitere Punkt verdoppelt die Zeit. 10 bis 12 ist in Produktion üblich; 4 hält automatisierte Tests schnell.
Schätzung auf diesem Gerät: wird gemessen…
Aktueller Standard. Node (bcrypt, bcryptjs), Python und Go.
Alle drei ergeben für dasselbe Passwort und Salt denselben Hash; nur die Kennung ändert sich. Verwenden Sie das Präfix, das Ihr System speichert, damit der Seed zu den anderen Datensätzen passt.
Geben Sie ein Passwort ein, um den Hash zu erzeugen.
Brauchen Sie MD5 oder SHA-256 für eine Prüfsumme statt für ein Passwort? Verwenden Sie den Hash-Generator.
Was ist bcrypt
bcrypt ist ein Algorithmus zum Hashen von Passwörtern aus dem Jahr 1999, basierend auf der Blowfish-Chiffre. Er erzeugt für jedes Passwort ein zufälliges 16-Byte-Salt und wiederholt die Arbeit 2 hoch Kosten Mal. Das Ergebnis enthält alles, was für die spätere Prüfung nötig ist: Präfix, Kosten, Salt und Hash, in einer Zeichenkette mit 60 Zeichen. Deshalb ergibt dasselbe Passwort jedes Mal einen anderen Hash, und die Prüfung verwendet das Salt aus dem Hash selbst.
Warum nicht MD5 oder SHA-256 für Passwörter
MD5 und SHA-256 wurden auf Geschwindigkeit ausgelegt: Eine Grafikkarte testet Milliarden pro Sekunde. Gelangt die Datenbank nach außen, tauchen häufige Passwörter in Minuten auf. bcrypt ist absichtlich langsam. Bei Kosten 12 dauert jeder Versuch einige Dutzend Millisekunden, was bei einem Login nicht stört und das Testen von Millionen Passwörtern unpraktikabel macht. Ein festes Salt für das ganze System hilft nicht, denn der Angreifer muss die Tabelle nur einmal neu berechnen.
So wählen Sie die Kosten
Die Kosten sind der Exponent: 10 bedeutet 1.024 Runden, 12 bedeutet 4.096. Wählen Sie den höchsten Wert, den Ihr Server verkraftet, ohne den Login zu verlangsamen, und erhöhen Sie ihn mit der Zeit. In automatisierten Tests hält Kosten 4 die Suite schnell, ohne die Logik zu ändern, sofern der Produktionscode die Kosten aus der Konfiguration liest. Der Hash speichert seine Kosten, sodass alte Passwörter nach der Umstellung weiter funktionieren.
Die 72-Byte-Grenze
bcrypt verwendet nur die ersten 72 Bytes des Passworts und ignoriert den Rest ohne Warnung. Gemeint sind UTF-8-Bytes, keine Zeichen: ä und ß zählen 2, ein Emoji 4. Manche Bibliotheken lehnen längere Passwörter ab, andere schneiden sie ab. Akzeptiert Ihr System lange Passphrasen, begrenzen Sie die Länge bei der Registrierung oder hashen Sie vorher, wie es Django tut.
$2a$, $2b$ und $2y$
$2a$ ist die Version von 1999. 2011 führte ein Fehler in der PHP-Implementierung zu $2y$, das die korrekten Hashes kennzeichnet, und 2014 behob OpenBSD einen Fehler bei Passwörtern über 255 Bytes und führte $2b$ ein. Heute behandeln Bibliotheken alle drei als gleichwertig: Ein $2y$-Hash aus Laravel wird in Node bestätigt und ein $2a$ aus Spring in Python. Diese Seite prüft alle drei.
Testnutzer in Seeds und Migrationen
Erzeugen Sie den Hash hier und speichern Sie den fertigen Wert im Seed, statt die Bibliothek bei jedem Lauf aufzurufen. So bleibt der Seed deterministisch und schnell. Bewahren Sie das Klartext-Passwort nur in der Dokumentation der Testumgebung auf, nie im Produktions-Repository. Und prüfen Sie die Spaltengröße: Der Hash hat 60 Zeichen, und VARCHAR(255) vermeidet Probleme, falls sich der Algorithmus später ändert.
Häufige Fragen zu bcrypt
Kosten, Präfixe, die 72-Byte-Grenze und was zu prüfen ist, wenn der Login fehlschlägt.