bcrypt ist eine Hashfunktion, die speziell für die Speicherung von Passwörtern entwickelt wurde. Niels Provos und David Mazières stellten sie 1999 auf der USENIX-Konferenz vor; der Name steht für „Blowfish crypt", weil der Algorithmus auf dem Blowfish-Verfahren aufbaut. Anders als schnelle Hashes wie SHA-256 ist bcrypt absichtlich langsam und damit für Angreifer teuer.

Warum langsame Hashes wichtig sind

Eine Hashfunktion wie SHA-256 rechnet auf moderner Hardware Milliarden Versuche pro Sekunde. Wer eine gestohlene Passwort-Datenbank besitzt, kann so schwache Passwörter in kurzer Zeit erraten. bcrypt verlangsamt das: Jede Berechnung kostet deutlich mehr Rechenzeit, ein Brute-Force-Angriff wird um Größenordnungen teurer — klassisches Key Stretching.

Eigenschaften von bcrypt

  • Eingebautes Salt: Jeder Hash enthält automatisch einen zufälligen Salt-Wert, Rainbow Tables laufen ins Leere.
  • Adaptiv: Ein Kostenfaktor (2 hoch n Runden) lässt sich später erhöhen, um mit schnellerer Hardware Schritt zu halten.
  • Format: Ein Hash sieht aus wie $2b$12$... — Präfix, Kostenfaktor, Salt und Prüfsumme in einem String.
  • 72-Byte-Limit: Passwörter länger als 72 Bytes werden abgeschnitten; längere Passwörter sollte man vorher mit SHA-256 vorhashen.

Einordnung

Die OWASP-Empfehlung nennt Argon2 als erste Wahl für neue Systeme; bcrypt, scrypt und PBKDF2 gelten als akzeptable Alternativen. Viele etablierte Frameworks wie Laravel, Django oder Spring Security unterstützen bcrypt direkt.

Verwandte Grundlagen: Hashfunktion, Salt, Argon2, PBKDF2, Brute-Force-Angriff, Rainbow Table.