Was ist bcrypt?
Bcrypt ist eine Passwort-Hashing-Funktion, entworfen von Niels Provos und David Mazières, basierend auf der Blowfish-Chiffre. Im Gegensatz zu schnellen Digests wie MD5 oder SHA-256 ist bcrypt bewusst langsam und rechenintensiv — das macht Brute-Force-Angriffe auf gestohlene Passwort-Hashes unpraktikabel. Bcrypt generiert automatisch ein zufälliges Salt pro Passwort, sodass identische Passwörter unterschiedliche Hashes erzeugen.
Wie funktioniert bcrypt?
Der bcrypt-Algorithmus läuft vollständig in Ihrem Browser. Hier ist, was Schritt für Schritt passiert:
- Ihr Passwort wird als UTF-8-Bytes kodiert und in den bcrypt-Schlüsselplan eingespeist, der das 4.184-Byte-P-Array und die S-Boxen der Blowfish-Chiffre mit dem Passwort und Salt initialisiert.
- Ein zufälliges 128-Bit-Salt wird generiert. Das Salt wird in den Schlüsselplan eingemischt, sodass jedes eindeutige Salt selbst für dasselbe Passwort einen völlig anderen Hash erzeugt.
- Der Schlüsselplan wird für 2^Kosten Runden ausgeführt (z. B. 2^10 = 1.024 Iterationen bei Kostenfaktor 10). Jede Iteration verschlüsselt das Salt und die P-Array-Einträge erneut, wodurch die Berechnung mit steigenden Kosten langsamer wird.
- Die endgültige Ausgabe ist eine 60 Zeichen lange Zeichenkette im Format
$2b$<cost>$<salt><hash>, wobei cost mit Nullen aufgefüllt ist (z. B. 10), salt 22 Base64-Zeichen und hash 31 Base64-Zeichen sind. - Zur Verifikation wird derselbe Algorithmus erneut mit dem Kandidaten-Passwort und dem aus dem gespeicherten Hash extrahierten Salt ausgeführt. Stimmt der abgeleitete Hash mit dem gespeicherten überein, ist das Passwort korrekt.
Welchen Kostenfaktor sollte ich verwenden?
Der Kostenfaktor ist der Logarithmus der Iterationsanzahl — Kostenfaktor 10 bedeutet 2^10 = 1.024 Runden, Kostenfaktor 12 bedeutet 4.096 Runden. Wählen Sie basierend auf Ihren Sicherheitsanforderungen und Ihrer Hardware:
- Kostenfaktor 4-6 (16-64 Runden) — nur für Entwicklung und Tests. Zu schnell für die Produktion; bietet minimalen Schutz.
- Kostenfaktor 8 (256 Runden) — absolutes Minimum für nicht-kritische Anwendungen. Etwa 6 ms auf moderner Hardware.
- Kostenfaktor 10 (1.024 Runden) — aktuelle empfohlene Basislinie. Dauert etwa 25 ms. Gut für die meisten Webanwendungen.
- Kostenfaktor 12 (4.096 Runden) — empfohlen für Admin-Portale, Finanzsysteme und hochsichere Anwendungen. Dauert etwa 100 ms.
- Kostenfaktor 14 (16.384 Runden) — hohe Sicherheit. Dauert etwa 400 ms. Verwenden Sie dies für Master-Passwörter, Verschlüsselungsschlüssel oder wenn die Anmelde-Latenz akzeptabel ist.
Warum diesen bcrypt-Generator verwenden?
- Ihre Privatsphäre ist geschützt — jedes Passwort wird lokal in Ihrem Browser gehasht, und keine Daten verlassen Ihr Gerät.
- Sie haben beide Modi nebeneinander: neue Hashes generieren oder vorhandene verifizieren, ohne die Seite zu wechseln.
- Der Kostenfaktor ist von 4 (schnell) bis 15 (sehr langsam) einstellbar, sodass Sie ihn an die Sicherheitsanforderungen Ihrer Anwendung anpassen können.
- Die Hashes verwenden das Standardformat
$2b$, das mit jeder gängigen Sprache und jedem Framework funktioniert.
Was sind häufige Anwendungen von bcrypt?
Bcrypt wird in der Industrie weit verbreitet für die Passwortspeicherung und -verifikation eingesetzt:
- Webanwendungs-Authentifizierung — Speichern von Benutzer-Passwort-Hashes in Datenbanken, sodass Klartext-Passwörter nie gespeichert werden.
- API-Key-Hashing — Hashing von API-Geheimnissen vor der Speicherung, damit ein Datenbankleck keine gültigen Anmeldedaten preisgibt.
- Migrations-Audit — Überprüfen, ob alte Passwort-Hashes aus einem älteren System Benutzer nach der Aktualisierung der Authentifizierungsschicht noch authentifizieren können.
Wie sieht ein bcrypt-Hash aus?
Das Hashen des Passworts hunter2 mit Kostenfaktor 10 erzeugt eine Zeichenkette wie $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. Das Format gliedert sich wie folgt: $2b$ (Algorithmusversion), 10 (Kostenfaktor), $, dann 22 Zeichen Salt und 31 Zeichen Hash, alle Base64-kodiert. Jeder Durchlauf mit demselben Passwort erzeugt aufgrund des zufälligen Salts einen anderen Hash.
Dieser bcrypt-Generator läuft vollständig in Ihrem Browser mit einer reinen JavaScript-Implementierung. Hashen Sie Passwörter vor der Speicherung, verifizieren Sie vorhandene Hashes und passen Sie den Kostenfaktor an Ihre Sicherheitsanforderungen an — alles ohne ein einziges Byte an einen Server zu senden.