Bcrypt-Hash & Verifizieren

Erzeuge salted bcrypt-Hashes für Passwörter und verifiziere Klartext gegen einen vorhandenen Hash – alles im Browser.

Erzeuge salted bcrypt-Hashes für Passwörter und verifiziere Klartext gegen einen vorhandenen Hash – alles im Browser. Erzeuge salted bcrypt-Hashes für Passwörter und verifiziere Klartext gegen einen vorhandenen Hash – alles im Browser.

Erzeugter bcrypt-Hash

Hintergrund

Was bcrypt ist und warum es wichtig ist

bcrypt ist eine adaptive Passwort-Hash-Funktion, die 1999 von Niels Provos und David Mazieres entworfen wurde. Im Gegensatz zu schnellen Digests wie MD5 oder SHA-256 kostet bcrypt bewusst CPU-Zeit: Jeder Hash führt die Blowfish-Chiffre über eine konfigurierbare Anzahl von Runden aus, und die Arbeit verdoppelt sich mit jeder Erhöhung des Kostenfaktors. Diese Verzögerung macht Offline-Wörterbuch- und Brute-Force-Angriffe teuer. Eine korrekte bcrypt-Implementierung bettet zudem ein zufälliges 128-Bit-Salt in die Ausgabezeichenfolge ein, sodass zwei Hashes desselben Passworts immer unterschiedlich sind und Rainbow-Tables dagegen nutzlos sind.

Wie man einen bcrypt-Hash liest

Ein bcrypt-Hash sieht aus wie $2b$12$e0.6kJ8a5X8u5Yp3qR5E0e9dF4z3W2c1v0b9n8m7l6k5j4h3g2f1. Die Teile nach den führenden Dollarzeichen enthalten die Algorithmusversion, die Kosten und das Salt:

  • $2b$ -- die Algorithmusrevision. $2a$ und $2y$ sind ältere Varianten mit subtilen Unterschieden bei der Behandlung des 8-Bit-Vorzeichenfehlers; $2b$ ist die aktuelle Empfehlung und das, was bcryptjs ausgibt.
  • 12 -- der Kostenfaktor. 2^12 = 4096 Runden des Schlüsselplans. Jedes +1 verdoppelt die Zeit; 10–12 ist ein sinnvoller Standard für interaktives Login, während 12–14 für gespeicherte Anmeldedaten geeignet ist.
  • Die verbleibenden 53 Zeichen enthalten ein 22-stelliges (128-Bit-)Base64-Salt plus eine 31-stellige (184-Bit-)Prüfsumme. Die gesamte Zeichenfolge ist ein eigenständiger Datensatz: Der Verifizierer liest Version, Kosten und Salt aus dem Hash heraus und führt die Ableitung erneut aus, um zu vergleichen.

Wie man dieses Werkzeug verwendet

Gib ein Passwort in das Eingabefeld ein, wähle einen Kostenfaktor und drücke Hash. Der erzeugte Hash erscheint im Ausgabefeld und wird auch in das Verifizierungsfeld eingetragen. Um einen vorhandenen Hash zu prüfen, füge ihn in das Verifizierungsfeld ein und gib das Kandidat-Passwort im Eingabefeld ein: Die Seite vergleicht sofort und zeigt einen grünen Haken oder ein rotes Kreuz. Da der Vergleich mit bcrypt.compareSync erfolgt, verrät er nie, wie nahe ein falscher Versuch war – jeder Versuch wird vollständig gehasht, bevor das Ergebnis feststeht.

Sicherheitshinweise und Einschränkungen

bcrypt kürzt die Eingabe auf 72 Byte: längere Passwörter werden stillschweigend abgeschnitten, sodass zwei Passwörter, die die ersten 72 Byte teilen, als gleich verglichen werden. Wenn du längere Eingaben benötigst, hashe vorab mit SHA-256 (hex-kodiert) und hashe diesen Digest mit bcrypt. bcrypt ist ein bewusst speicherschonender Algorithmus – er wehrt GPU-Arrays weniger gut ab als speicherharte Entwürfe wie Argon2 oder scrypt, aber seine 4-KB-Tabelle und der 64-Byte-Zustand machen günstiges ASIC-Cracking unattraktiv. Für völlig neue Systeme ist Argon2id oft die bessere Wahl; bcrypt bleibt eine hervorragende, weit verbreitete Option für die Legacy-Kompatibilität und für Fälle, in denen die Laufzeit kein Argon2 bereitstellen kann. Diese Seite läuft vollständig in deinem Browser: Das Passwort und der Hash verlassen niemals dein Gerät, und du kannst den Code-Pfad (MIT/BSD bcryptjs) in public/assets einsehen.

Erstellt mit der BSD-3-Clause-bcryptjs-Bibliothek, gebündelt in public/assets. Das Hashen läuft lokal; es wird nichts übertragen.

Häufig gestellte Fragen

Warum erzeugt dasselbe Passwort jedes Mal einen anderen Hash?
Für jeden Hash wird ein zufälliges 128-Bit-Salt erzeugt und in die Ausgabe eingebettet. Der Verifizierer liest das Salt aus dem Hash erneut aus, sodass die Korrektheit unbeeinflusst bleibt, aber identische Eingaben niemals identische Ausgaben liefern.
Welchen Kostenfaktor sollte ich verwenden?
Für interaktive Logins ist 10–12 ein guter Standard. Für gespeicherte Anmeldedaten möchtest du vielleicht 12–14. Höhere Kosten sind sicherer, aber langsamer; wähle den größten Wert, den dein Server pro Login verkraften kann.
Wird bcrypt auch 2026 noch empfohlen?
Ja. bcrypt ist weiterhin weit verbreitet und gilt als sicher, wenn es mit einem Kostenwert von 10+ verwendet wird. Für völlig neue Systeme werden speicherharte Argon2id oder scrypt oft bevorzugt, aber bcrypt ist eine solide, erprobte Wahl, besonders dort, wo jene nicht verfügbar sind.
Warum ist bcrypt langsamer als SHA-256?
Das ist der Sinn der Sache. SHA-256 ist darauf ausgelegt, schnell zu sein, was Angreifern Milliarden von Versuchen pro Sekunde erlaubt. bcrypts teurer Schlüsselplan und das Salt zwingen Angreifer, echte Zeit pro Versuch aufzuwenden, und machen Offline-Angriffe unpraktisch.
Was bedeutet das 72-Byte-Limit für meine Passwörter?
bcrypt ignoriert alles ab Byte 72. Zwei Passwörter, die länger als 72 Byte sind und dasselbe Präfix teilen, werden identisch verifiziert. Um längere Geheimnisse zu unterstützen, hashe sie zuerst mit SHA-256 (als Hex) und hashe den Digest mit bcrypt.
Wird mein Passwort an einen Server gesendet?
Nein. Alles läuft lokal in deinem Browser mit der gebündelten bcryptjs-Bibliothek. Du kannst die Verbindung zum Netzwerk trennen, nachdem die Seite geladen ist, und sie funktioniert trotzdem.