Zum Hauptinhalt springen

bcrypt-Hash-Generator

Das empfohlene .htpasswd-Format, in 3 Klicks

Sie möchten ein Konto mit dem empfohlenen Algorithmus in eine .htpasswd-Datei eintragen, ohne apache2-utils zu installieren? Geben Sie Benutzernamen und Passwort ein: Die Zeile im Format $2y$ ist fertig zum Einfügen.

Der Kostenfaktor ist ein Exponent: Jede Stufe verdoppelt die Rechenzeit. 10 entspricht htpasswd -B, 12 ist heute ein guter Kompromiss.

Wichtige Funktionen

Natives Format $2y$

Das bcrypt-Hashing von htpasswd -B, abgeleitet von Blowfish. Kompatibel mit Apache 2.4, nginx, Traefik und Caddy.

Einstellbarer Kostenfaktor

Von 4 bis 15, per Regler. Jede Stufe verdoppelt den Aufwand für einen Angreifer. Standard 10, wie bei htpasswd -B.

Zeile zum Einfügen

Das Ergebnis erscheint als vollständige Zeile user:hash, direkt kopierbar in Ihre .htpasswd-Datei.

Neues Salt bei jedem Aufruf

bcrypt bettet ein 128-Bit-Salt in den Hash ein. Zwei Konten mit demselben Passwort erhalten zwei verschiedene Hashes.

Nichts wird gespeichert

Das Passwort dient nur der Berechnung und verschwindet danach. Keine Spur in der Datenbank, kein Protokoll im Klartext.

Warum einen bcrypt-Hash online erzeugen?

Die HTTP-Basic-Authentifizierung bleibt der schnellste Weg, einen Administrationsbereich, eine Vorproduktion oder ein internes Dashboard zu schließen. Sie stützt sich auf eine .htpasswd-Datei, in der jede Zeile einen Benutzernamen mit einem gehashten Passwort verbindet - niemals im Klartext.

Seit Apache 2.4 erzeugt htpasswd -B bcrypt, und genau dieses Format empfiehlt die offizielle Dokumentation. Der Haken: Der Befehl setzt voraus, dass apache2-utils unter Debian oder httpd-tools unter RHEL installiert ist. Auf einem Windows-Rechner, bei Shared Hosting oder in einer Weboberfläche fehlt er häufig.

Drei Situationen, in denen dieser Generator hilft:

  • Eine Vorproduktion schützen → Den Zugang zu einer Testumgebung sperren, bevor Google sie indexiert
  • Ein Konto ohne SSH-Zugang anlegen → Die Zeile im Browser erstellen und über den Dateimanager des Hosters einfügen
  • Eine bestehende Datei modernisieren → Nach und nach $apr1$-Einträge durch $2y$-Einträge ersetzen

Der Generator in 3 Schritten

Schritt 1: Benutzername und Passwort eingeben

Tragen Sie den Kontonamen und das Passwort ein. Das Feld ist standardmäßig verdeckt; klicken Sie auf das Auge, um Ihre Eingabe vor dem Absenden zu prüfen. Die Schaltfläche "Passwort erzeugen" zieht eine zufällige Zeichenkette aus 16 Zeichen, falls Sie noch keine haben.

Schritt 2: Kostenfaktor einstellen

Der Regler startet bei 10, dem Wert von htpasswd -B. Gehen Sie für sensible Zugänge auf 12. Jede Stufe verdoppelt die Rechenzeit: bei der Erzeugung ebenso wie bei jeder Prüfung durch den Server.

Schritt 3: Die Zeile kopieren

Es werden zwei Ergebnisse angezeigt: der Hash allein und die vollständige .htpasswd-Zeile. Kopieren Sie letztere in Ihre Datei und laden Sie die Serverkonfiguration neu.


Aufbau eines bcrypt-Hashs

Eine .htpasswd-Zeile besteht aus zwei durch einen Doppelpunkt getrennten Feldern:

admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Das zweite Feld gliedert sich so:

TeilBeispielRolle
Algorithmuskennung2yZeigt dem Server, dass es sich um bcrypt handelt
Kostenfaktor10Exponent: Die Berechnung durchläuft 2^10 = 1.024 Runden
Salt + DigestN9qo8uLOickgx2ZMRZoMye...53 Zeichen: 22 für das 128-Bit-Salt, 31 für die Prüfsumme

Anders als bei APR1-MD5 belegt das Salt kein eigenes Feld: Es klebt im letzten Block am Digest. Es bleibt im Klartext lesbar, was normal ist - seine Aufgabe ist nicht Geheimhaltung, sondern zu verhindern, dass eine vorberechnete Tabelle das Passwort zurückgewinnt.


Den Kostenfaktor verstehen

Der Kostenfaktor ist ein Exponent, kein Multiplikator. Ein Faktor N durchläuft 2^N Runden der Schlüsselableitung:

KostenRundenRichtwert ZeitEinsatz
8256~15 msHeute zu schwach
101.024~60 msStandard von htpasswd -B, in Ordnung
124.096~250 msFür sensible Zugänge empfohlen
1416.384~1 sSpürbare Verzögerung bei jeder Anmeldung

Zwei Dinge sind zu bedenken. Erstens fällt diese Zeit bei jeder Prüfung an, also bei jeder HTTP-Basic-Anfrage: Ein Faktor von 14 auf einer Seite, deren Browser die Authentifizierung für jede Ressource wiederholt, macht sich sofort bemerkbar. Zweitens hängt die richtige Einstellung von Ihrer Hardware ab: Messen Sie, statt einen Wert abzuschreiben; üblich sind 100 bis 250 ms auf dem Server, der die Prüfung durchführt.


Ein Verzeichnis mit Apache schützen

1. Die Datei anlegen

Legen Sie Ihre .htpasswd-Datei außerhalb des Webverzeichnisses ab, damit sie nie über HTTP ausgeliefert wird:

/var/www/secrets/.htpasswd

2. Den Schutz deklarieren

In der .htaccess des zu schützenden Verzeichnisses oder im <Directory>-Block Ihres VirtualHosts:

AuthType Basic
AuthName "Geschuetzter Bereich"
AuthUserFile /var/www/secrets/.htpasswd
Require valid-user

3. Die Konfiguration neu laden

sudo apachectl configtest && sudo systemctl reload apache2

Für nginx wird dasselbe Dateipaar so deklariert:

location /admin/ {
    auth_basic           "Geschuetzter Bereich";
    auth_basic_user_file /var/www/secrets/.htpasswd;
}

nginx liest bcrypt ab Version 1.0.3 auf Systemen, deren crypt_r() es unterstützt - das trifft auf alle gängigen Linux-Distributionen zu.


bcrypt im Vergleich zu den anderen .htpasswd-Formaten

FormatPräfixRechenaufwandUrteil
bcrypt$2y$Einstellbar, 2^Kosten RundenFür jedes neue Projekt empfohlen
APR1-MD5$apr1$1.000 MD5-IterationenVertretbar, maximale Kompatibilität
SHA-1{SHA}1 Iteration, ohne SaltMeiden: kein Salt, per Tabelle knackbar
crypt() DESkeines25 Iterationen, auf 8 Zeichen gekürztVeraltet, nicht mehr verwenden

Kurz gesagt: bcrypt ist das einzige .htpasswd-Format, dessen Aufwand sich an die Hardware der jeweiligen Zeit anpassen lässt. Die anderen drei haben feste Kosten aus den 1990er- oder 2000er-Jahren, die der Fortschritt der GPUs lächerlich gemacht hat. Behalten Sie APR1-MD5 nur, wenn Ihr Server $2y$ nicht lesen kann.


Den Hash auf der Kommandozeile prüfen

Dieses Werkzeug liefert einen standardkonformen bcrypt-Hash, den Systemwerkzeuge prüfen können:

# Das Gegenstück mit htpasswd erzeugen (Paket apache2-utils / httpd-tools)
htpasswd -nbB admin meinPasswort

# Einen Kostenfaktor von 12 erzwingen
htpasswd -nbB -C 12 admin meinPasswort

Die beiden Zeichenketten sind nicht identisch - das Salt unterscheidet sich bei jeder Ziehung -, doch beide bestätigen dasselbe Passwort. Zur Kontrolle:

# Die Prüfung mit dem Salt eines vorhandenen Hashs wiederholen
python3 -c "import bcrypt,sys; print(bcrypt.checkpw(b'meinPasswort', sys.argv[1].encode()))" '$2y$10$...'

FAQ - Häufige Fragen

F: Was ist das Format $2y$?

A: Es ist die bcrypt-Kennung in einer .htpasswd-Datei. Ein vollständiger Hash folgt dem Muster $2y$<Kosten>$<Salt><Digest>: eine Algorithmuskennung, ein zweistelliger Kostenfaktor und 53 Zeichen mit dem 128-Bit-Salt und der Prüfsumme. Genau das schreibt htpasswd -B.


F: Worin unterscheiden sich $2a$, $2b$ und $2y$?

A: Im Kern gar nicht, es sind drei Kennungen desselben Algorithmus. $2y$ wurde 2011 von PHP eingeführt, um eine korrigierte Implementierung eines Fehlers bei Nicht-ASCII-Zeichen zu markieren; die hier verwendete Bibliothek war nie betroffen. Apache und nginx akzeptieren alle drei.


F: Welchen Kostenfaktor sollte ich wählen?

A: 10 als Standard, 12 für sensible Zugänge. Der richtige Reflex ist, auf dem prüfenden Server zu messen und 100 bis 250 ms anzupeilen: langsam genug, um einen Wörterbuchangriff zu behindern, schnell genug, um im Alltag nicht aufzufallen.


F: Warum komme ich nicht über 15 hinaus?

A: Da der Kostenfaktor ein Exponent ist, verlangt 16 bereits mehrere Sekunden Rechenzeit und würde das Zeitbudget einer HTTP-Anfrage überschreiten. Für höhere Werte erzeugen Sie den Hash lokal mit htpasswd -B -C 18.


F: Ist bcrypt besser als APR1-MD5?

A: Ja, deutlich. APR1-MD5 reiht 1.000 MD5-Iterationen aneinander, die spezialisierte Hardware milliardenfach pro Sekunde berechnet. bcrypt verlangt Speicher und nicht sequenzielle Zugriffe, was die Parallelisierung einer GPU stark begrenzt. Für eine neue .htpasswd-Datei ohne Zögern bcrypt.


F: Kann ich ein Passwort mit mehr als 72 Zeichen verwenden?

A: Nein, und das ist keine Grenze dieses Werkzeugs: bcrypt ignoriert schlicht alles jenseits von 72 Bytes. Ein Passwort mit 80 Zeichen entspräche daher seinen ersten 72. Achtung, ein Zeichen mit Umlaut zählt in UTF-8 als zwei Bytes.


F: Wird das Passwort irgendwo gespeichert?

A: Nein. Es wandert für die Dauer der Berechnung über HTTPS zur CaptainDNS-API und wird danach verworfen. Keine Datenbank, kein Protokoll mit dem Passwort im Klartext.


F: Wohin gehört die .htpasswd-Datei?

A: Außerhalb des Webverzeichnisses, etwa nach /var/www/secrets/. Liegt sie in einem über HTTP ausgelieferten Verzeichnis, könnte ein Besucher sie herunterladen und die Hashes offline angreifen - genau das macht der Kostenfaktor teuer, aber nicht unmöglich.


Ergänzende Werkzeuge

WerkzeugNutzen
APR1-MD5-GeneratorEine .htpasswd-Zeile im historischen Apache-Format erzeugen
PasswortgeneratorEin starkes Passwort ziehen, bevor Sie es hashen
Hash-GeneratorMD5, SHA-1, SHA-256 und SHA-512 eines Textes berechnen
Base64-EncoderDen Authorization-Header einer Basic-Anfrage kodieren
HTTP-Header-AnalyseDie Header eines geschützten Bereichs prüfen

Nützliche Ressourcen


Datenschutzversprechen

Ihr Passwort wird ausschließlich zur Berechnung des Hashs über eine verschlüsselte Verbindung an die CaptainDNS-API übertragen. Es wird weder gespeichert noch protokolliert. Nur anonyme technische Kennzahlen werden aufbewahrt (Verarbeitungsdauer, Antwortcode).