Konfiguration
Erzeugt bcrypt-Hashes zum Speichern von Passwörtern und prüft, ob ein Passwort zu einem vorhandenen Hash gehört. Im Modus Generieren wählst du Kosten und Version; im Modus Prüfen fügst du den Hash und das zu prüfende Passwort ein. Das Ergebnis zeigt jeden Teil des Hashes und wie lange die Berechnung gedauert hat.

Ein bcrypt-Hash lässt sich nicht „entschlüsseln“: Um herauszufinden, ob ein Passwort korrekt ist, nutze den Modus „Prüfen“. Alles wird in deinem Browser berechnet, und das Passwort wird an keinen Server gesendet.

Parameter
Zwischen 4 und 15

Aktuelle Version. Erzeugt von OpenBSD, Node.js, Python, Go und Rust.

Jeder zusätzliche Kostenpunkt verdoppelt die Rechenzeit. OWASP empfiehlt mindestens 10; ideal ist der höchste Wert, den dein Server in etwa 250 ms berechnet.

0 von 72 Bytes

So funktioniert es

bcrypt ist eine Hashfunktion, die zum Speichern von Passwörtern entwickelt wurde. Anders als SHA-256 oder MD5, die in Mikrosekunden berechnet werden, ist bcrypt absichtlich langsam: Wer eine Datenbank stiehlt, braucht so Jahre, um Passwörter per Brute Force durchzuprobieren.

Jeder Hash enthält alles, was zur Prüfung nötig ist: die Version des Algorithmus, die Kosten und ein zufälliges 128-Bit-Salt. Deshalb ergibt dasselbe Passwort jedes Mal einen anderen Hash, und das Salt muss nicht separat gespeichert werden.

Die Kosten sind der Zweierlogarithmus der Rundenanzahl: Bei Kosten 10 werden 1024 Runden berechnet, bei 12 sind es 4096. Jeder zusätzliche Punkt verdoppelt die Rechenzeit, sodass man mit stärkerer Hardware Schritt halten kann, ohne den Algorithmus zu wechseln.

Beispiele

rasmuslerdorf$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1aDas Beispiel zu password_verify() aus dem PHP-Handbuch: Füge es im Modus „Prüfen“ mit diesem Passwort ein, und es stimmt überein.
abc$2a$06$If6bvum7DFjUnE9p2uDeDu0YHzrHM6tf.iqN8.yx.jNN1ILEf7h0iEin Testvektor von jBCrypt mit Kosten 6. Die ersten 22 Zeichen nach den Kosten sind das Salt, die restlichen 31 der Hashwert.

Anwendungsfälle

  • Den Hash für das Startpasswort eines Administrators erzeugen, um ihn direkt in die Datenbank einzufügen.
  • Prüfen, ob ein Passwort zum gespeicherten Hash passt, wenn sich ein Benutzer nicht anmelden kann.
  • Test-Hashes für Fixtures, Seeds oder automatisierte Tests einer Laravel-, Spring-, Django- oder Node.js-Anwendung erzeugen.
  • Messen, wie lange jeder Kostenwert dauert, um vor der Konfiguration auf dem Server den passenden Wert zu wählen.
  • Einträge für .htpasswd-Dateien von Apache erstellen, die bcrypt-Hashes mit dem Präfix $2y$ akzeptieren.

Häufige Fragen

Kann man einen bcrypt-Hash entschlüsseln?

Nein. bcrypt ist eine Einwegfunktion: Es gibt keinen Weg, das Passwort aus dem Hash zu gewinnen. Möglich ist nur, Kandidaten auszuprobieren und zu sehen, ob einer passt – und genau das macht bcrypt langsam.

Was ist der Unterschied zwischen $2a$, $2b$ und $2y$?

Für normale Passwörter berechnen alle drei dasselbe. $2a$ ist die ursprüngliche Version; $2y$ führte PHP 2011 ein, um seine Hashes von denen einer fehlerhaften Implementierung zu unterscheiden; $2b$ übernahm OpenBSD 2014 bei der Korrektur eines weiteren Fehlers mit Passwörtern über 255 Zeichen. Fast alle Bibliotheken akzeptieren beim Prüfen alle drei.

Welche Kosten sollte ich verwenden?

OWASP empfiehlt mindestens 10. Ideal ist der höchste Wert, den dein Server in etwa 250 ms pro Anmeldung berechnen kann. Spring Security verwendet standardmäßig 10; Laravel 11 und PHP 8.4 haben ihren Standard auf 12 angehoben.

Warum ignoriert bcrypt alles über 72 Bytes?

Der Algorithmus verwendet das Passwort als Blowfish-Schlüssel, der höchstens 72 Bytes umfasst. Der Rest wird ohne Warnung verworfen, sodass zwei Passwörter mit denselben ersten 72 Bytes denselben Hash ergeben. Zeichen mit Akzenten oder Emojis belegen zwei bis vier Bytes, deshalb zählt das Tool Bytes und nicht Zeichen.

Ist bcrypt oder Argon2 besser?

Argon2id ist heute der empfohlene Algorithmus für neue Systeme, weil er nicht nur langsam ist, sondern auch viel Speicher benötigt, was GPU-Angriffe verteuert. Trotzdem ist bcrypt mit angemessenen Kosten weiterhin sicher und Standard in PHP, Laravel, Spring und Ruby on Rails.

Wird mein Passwort an einen Server gesendet?

Nein. Hash und Prüfung werden in deinem Browser berechnet, und das Passwort verlässt nie dein Gerät; es wird auch nicht in den Link zum Teilen des Tools aufgenommen.