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.