Wie benutzt du dieses Tool?
- Webserver wählen — Apache oder nginx. Die Auswahl setzt den Hash-Algorithmus-Default und sperrt inkompatible Optionen.
- Benutzername und Passwort eingeben. Der Strength-Meter zeigt Entropie und Heuristik-Warnungen live an.
- Bei bcrypt: Cost-Factor wählen (10/12/14). Der Single-Shot-Benchmark misst auf deinem Gerät, wie lange Hashing dauert.
- Single- oder Batch-Modus. Batch akzeptiert `user:password` pro Zeile und emittiert einen kompletten `.htpasswd`-Block.
- Ergebnis kopieren oder als `.htpasswd` herunterladen. Alles passiert im Browser — kein Server, kein Account.
Was macht der htpasswd-Generator?
Der Generator emittiert Apache-.htpasswd-Zeilen — pure-client, ohne dass dein Passwort den Browser
verlässt. Du wählst den Webserver (Apache oder nginx), gibst Benutzer plus Passwort ein, und der
Generator setzt den passenden Hash-Algorithmus als Default: bcrypt für Apache, APR1-MD5 für nginx.
Wenn du eine inkompatible Kombination versuchst (bcrypt auf nginx), erscheint die Warnung sofort —
nicht erst beim Production-Deploy, wenn crypt_r() failed (22) im Error-Log auftaucht.
Vier Hash-Algorithmen sind eingebaut, ausgewählt nach 2026-Sicherheitsstand:
- bcrypt — OWASP-Default, Cost-Factor 4 / 10 / 12 / 14 wählbar. Single-Shot-Benchmark misst die tatsächliche Hashing-Latenz auf deinem Gerät vor dem Hashen.
- APR1-MD5 — Apache-Legacy + nginx-Kompatibilität. 1000 MD5-Iterationen mit 8-Byte-Salt.
- SHA-1 —
{SHA}-Präfix, kein Salt, kein Stretching. Nur als nginx-Fallback wenn APR1 nicht geht; sonst nicht empfohlen. - crypt (DES) — der ursprüngliche Apache-Standard. Schneidet Passwörter nach 8 Zeichen ab, ist 2026 gegen Wörterbuch-Angriffe trivial. Nur für historische Setups.
Single-Modus und Batch-Modus sind getrennte Tabs. Im Batch fügst du user:password-Zeilen ein und
bekommst einen kompletten .htpasswd-Block heraus — mit pro-Eintrag-Cost-Override-Option. Der
Strength-Meter zeigt Entropie und Heuristik-Warnungen (Wörterbuch-Treffer, gängige Substitutionen,
Tastatur-Walks) live an, während du tippst.
Welcher bcrypt Cost-Factor wird 2026 empfohlen?
bcrypt ist der einzige der vier .htpasswd-Algorithmen, der 2026 noch ohne Vorbehalt empfohlen
wird. Der Algorithmus stammt aus 1999, basiert auf der Blowfish-Block-Cipher und nutzt einen
adaptiven Cost-Factor — pro Stufe verdoppelt sich die Hashing-Zeit. Das macht bcrypt zukunftssicher:
Wenn GPU-Hardware in fünf Jahren doppelt so schnell wird, erhöhst du Cost um eins und das
Sicherheits-Level bleibt gleich.
Die OWASP Password Storage Cheat Sheet
empfiehlt für 2026 Cost 12 als Minimum. Der Apache-htpasswd-CLI-Default ist immer noch Cost 10 —
das war 2014 angemessen, ist heute zu schwach. Cost 14 ist konservativer (~1,5 s pro Hash), aber für
Login-Workflows spürbar langsam.
Der Generator misst die tatsächliche Hashing-Zeit auf deinem Gerät, bevor du das endgültige Passwort hashst. Du siehst: „Cost 12 = 287 ms auf diesem Browser”. Damit kannst du Cost-Factor nach Latenz statt nach Bauchgefühl wählen. Auf langsamen Mobile-Browsern reicht Cost 11; auf modernen Desktops ist Cost 13 oft noch flott. Voreinstellungen: 4 (Demos), 10 (Apache-CLI), 12 (OWASP), 14 (konservativ).
Welcher Algorithmus passt zu Apache oder nginx?
Apache mod_auth_basic plus mod_authn_file akzeptieren alle vier Algorithmen einwandfrei — die
empfohlene Wahl ist bcrypt. Der Generator setzt das automatisch, wenn du oben „Apache” auswählst.
Die .htaccess daneben lautet:
AuthType Basic
AuthName "Protected"
AuthUserFile /pfad/zu/.htpasswd
Require valid-user
Den passenden Block kannst du parallel mit dem .htaccess-Generator bauen — dort gibt es eine HTTP-Basic-Auth-Regel mit Realm und Pfad-Feld.
nginx ist anders. auth_basic_user_file ruft die System-crypt()-Funktion auf und akzeptiert nur
Hashes, die crypt() versteht: APR1-MD5 ($apr1$), SHA-1 ({SHA}), DES-crypt und Plain-Text (das
solltest du natürlich nie nutzen). bcrypt wird abgelehnt — der Generator schaltet beim Webserver-
Toggle automatisch um und macht bcrypt deaktivierbar. Wer auf nginx trotzdem bcrypt-Verifikation
will, nutzt OpenResty mit Lua-Modul oder ein dediziertes Auth-Plugin — beides aber außerhalb der
Basic-Auth-Standard-Direktive.
Warum ist APR1-MD5 veraltet und wie migriert man?
APR1-MD5 hat eine merkwürdige Doppel-Rolle: Auf Apache veraltet, auf nginx Standard. Der Algorithmus
nutzt 1000 MD5-Iterationen mit 8-Byte-Salt — 2010 noch ausreichend, 2026 in unter einer Sekunde mit
GPU-Brute-Force durchbrechbar. Wer eine Apache-Installation neu aufsetzt, sollte nie zu APR1
greifen; wer eine bestehende APR1-.htpasswd migriert, ersetzt die Zeilen schrittweise durch
bcrypt-Versionen.
Migrationsschritte:
- Neue bcrypt-Hashes pro Benutzer generieren (Generator-Batch-Modus).
- Alte APR1-Zeilen aus
.htpasswdlöschen, neue bcrypt-Zeilen einfügen. .htaccessneu laden (Apache-Reload reicht, kein Restart).- Login einmal pro Benutzer testen — Apache verifiziert beide Formate parallel, der Switch ist transparent.
Für nginx-Setups ist die Migration komplizierter, weil bcrypt nicht akzeptiert wird. Drei Pfade: (a) APR1 behalten und Passwörter regelmäßig rotieren, (b) auf OpenResty + Lua-Auth-Modul umsteigen, (c) Basic-Auth komplett durch ein modernes Auth-System (OAuth2-Proxy, Authelia, Cloudflare Access) ersetzen. Variante (c) ist für 2026 die langfristig richtige Antwort — Basic-Auth war nie als Production-Auth gedacht.
Wie verlässt das Passwort niemals den Browser?
Dieses Passwort sieht niemand außer dir. Der Generator hat keinen Server-Endpunkt für Hashing,
keinen Telemetrie-Ping, keinen Cookie, keinen Account. Die einzige Web-Crypto-API-Nutzung ist
crypto.getRandomValues für Salt-Bytes — das passiert im Browser, ohne Netzwerk-Aufruf. Der
bcrypt-Algorithmus ist als pure-JS-Implementation eingebaut; APR1, SHA-1 und crypt ebenfalls.
So überprüfst du das selbst:
- Tool öffnen, Browser-DevTools (F12).
- Tab „Netzwerk” / „Network” wählen, Filter auf „Alle”.
- Passwort eingeben, Hash erzeugen.
- Im Netzwerk-Tab erscheint kein einziger Request während des Hashings — kein POST, kein WebSocket, nichts.
Das Form-Element trägt kein action-Attribut, die Inputs haben autocomplete=\"new-password\" damit
dein Browser den Klartext nicht in seinen Form-History speichert. Wenn du das Tab schließt, ist das
Passwort weg — der Generator persistiert nichts in localStorage oder sessionStorage. Wer einen
Audit braucht: Der Source-Code ist auf GitHub einsehbar und der Lint blockt jeden fetch-Aufruf in
diesem Tool-Pfad.
Wie nutze ich den Batch-Modus für Team-Setups?
Der Batch-Modus löst das DevOps-Team-Setup-Szenario: Zehn Entwickler brauchen Zugriff auf eine
Staging-Umgebung, jeder mit eigenem Passwort. Du fügst zehn user:password-Zeilen in das
Batch-Feld ein, wählst Algorithmus plus Cost-Factor, und bekommst eine komplette .htpasswd-Datei
heraus — ein Hash pro Zeile, bereit zum Hochladen auf den Server.
Der Strength-Meter läuft pro Eintrag mit, du siehst sofort, wer ein schwaches Passwort genommen hat.
Optional: Pro-Eintrag-Cost-Override — Admin-Konten bekommen Cost 14, Service-Accounts Cost 12. Der
Download-Knopf liefert die Datei direkt im richtigen Format. Kombiniert mit dem
.htaccess-Generator baust du die komplette HTTP-Basic-Auth-Konfiguration in
zwei Tab-Wechseln auf — .htaccess plus .htpasswd, beide pure-client erzeugt.
Was ist absichtlich nicht gebaut?
- Keine Passwort-Vorschläge — Passwort-Generierung gehört in den dedizierten Passwort-Generator, nicht in einen Hash-Emitter. Eine Mischung beider Funktionen würde Vertrauen kosten („sieht der Generator mein Passwort?”-FAQ).
- Kein Hash-Cracking — der Generator emittiert, er bricht nicht. Wer einen verlorenen Hash zurückrechnen will, nutzt John the Ripper oder hashcat lokal — kein Browser-Tool kann das in vernünftiger Zeit.
- Keine SSO-/OAuth-Integration — HTTP-Basic-Auth ist ein eigenes Auth-Schema. Für moderne Auth
nutzt man OIDC-Provider, nicht
.htpasswd. Der Generator dient genau dem klassischen Basic-Auth-Use-Case. - Keine Argon2-Variante — Apache
htpasswdunterstützt Argon2 nicht. Wer Argon2 will, konfiguriert ein dediziertes Auth-Modul oder steigt auf Application-Layer-Auth um.
Wo finde ich mehr Details?
- Apache htpasswd Manual 2.4 — offizielle CLI-Dokumentation
- OWASP Password Storage Cheat Sheet — Hash-Algorithmus-Empfehlungen 2026
- nginx Issue #1154 — die offizielle bcrypt-Ablehnung mit Begründung
- OpenSSL 3.0 Manual — kryptografische Primitive die unter bcrypt/APR1 stecken
- bcrypt auf Wikipedia — Geschichte, Algorithmus, Cost-Factor-Mathematik
- MD5 auf Wikipedia — warum MD5 (und damit APR1) 2026 als unsicher gilt
Zuletzt aktualisiert: