Bcrypt-Hash erzeugen und prüfen
Erstellen Sie einen bcrypt-Hash für ein Passwort oder testen Sie, ob ein Passwort zu einem gespeicherten Hash passt, ohne dass etwas Ihren Browser verlässt.
Bcrypt-Hashes online erzeugen und prüfen
bcrypt ist ein Passwort-Hashverfahren, das absichtlich langsam ist. Ein allgemeiner Hash wie SHA-256 lässt sich milliardenfach pro Sekunde berechnen – genau das, was jemand will, der Passwörter aus einer geleakten Datenbank errät; bcrypt macht jeden Versuch teuer, und sein Kostenfaktor lässt diesen Aufwand mit schnellerer Hardware mitwachsen. Es ist der Standard in PHP, Laravel, Ruby on Rails, Spring Security und vielen anderen Frameworks.
Diese Seite öffnet den Reiter bcrypt des Hash-Generators. Typische Aufgaben: das erste Admin-Konto direkt in einer Datenbank anlegen, eine Test-Fixture schreiben oder herausfinden, warum sich ein Nutzer nicht anmelden kann.
Einen bcrypt-Hash lesen
Ein bcrypt-Hash hat immer 60 Zeichen und enthält alles, was man später zum Prüfen braucht. Nehmen Sie $2y$10$N9qo8uLOickgx2ZMRZoMye...:
| Teil | Bedeutung |
|---|---|
$2y$ | Versionspräfix |
10 | Kostenfaktor: 2 hoch 10, also 1.024 Runden Schlüsselaufbau |
| Die nächsten 22 Zeichen | Das zufällige Salt |
| Die letzten 31 Zeichen | Der eigentliche Hash |
Den Kostenfaktor wählen
Der Kostenfaktor lässt sich hier von 4 bis 14 einstellen. Jede Stufe verdoppelt den Aufwand, Kostenfaktor 12 ist also viermal langsamer als 10. Peilen Sie auf Ihrem eigenen Server eine Hash-Zeit von einem Bruchteil einer Sekunde an; das Werkzeug zeigt beim Rechnen seinen Fortschritt, was Ihnen ein Gefühl für den Unterschied gibt. Weil der Kostenfaktor im Hash gespeichert ist, können Sie ihn später erhöhen und jedes Passwort beim nächsten Login seines Besitzers neu hashen.
Die 72-Byte-Grenze
bcrypt liest nur die ersten 72 Byte eines Passworts. Eine längere Eingabe wird nicht abgelehnt, sondern stillschweigend abgeschnitten, sodass zwei lange Passwörter mit denselben ersten 72 Byte denselben Hash ergeben. Zeichen außerhalb des englischen Alphabets belegen in UTF-8 oft zwei bis vier Byte, die Grenze kommt also früher, als die Zeichenzahl vermuten lässt. Das Werkzeug zählt die Bytes beim Tippen und warnt, sobald Sie 72 überschreiten.
Einen Hash im Code prüfen
| Sprache | Erzeugen | Prüfen |
|---|---|---|
| PHP | password_hash($pw, PASSWORD_BCRYPT) | password_verify($pw, $hash) |
| Node.js (bcryptjs) | bcrypt.hash(pw, 10) | bcrypt.compare(pw, hash) |
| Python (bcrypt) | bcrypt.hashpw(pw, bcrypt.gensalt()) | bcrypt.checkpw(pw, hashed) |
Zufällige Passwörter zum Hashen liefert der Passwort-Generator. Für Dateiprüfsummen statt Passwörtern bleiben Sie bei SHA-256.