WordPress Password Hash Generator

Erstelle WordPress-kompatible Passwort-Hashes (phpass) und überprüfe bestehende Hashes direkt im Browser.

Hash erstellen

{{ __t('strength') }} {{ strengthLabel }}
{{ hash }}

Gib ein Passwort ein, um einen WordPress-Hash zu generieren.

Hash überprüfen

{{ verifyResult ? __t('verify_match') : __t('verify_no_match') }}
{{ __t('info_algorithm') }}{{ hashInfo.algorithm }}
{{ __t('info_iterations') }}{{ hashInfo.iterations }}
{{ __t('info_salt') }}{{ hashInfo.salt }}
{{ __t('info_valid_format') }}{{ hashInfo.valid ? '✓' : '✗' }}

Was ist ein WordPress Password Hash?

WordPress verwendet die phpass-Bibliothek (PHPass) zum Hashen von Passwörtern. Dabei kommt iteriertes MD5-Hashing mit einem zufälligen Salt zum Einsatz. Die resultierenden Hashes beginnen mit dem Präfix $P$ (oder $H$) und sind 34 Zeichen lang. Diese Hashes werden in der Tabelle wp_users in der Spalte user_pass gespeichert. Obwohl MD5 allein als unsicher gilt, bieten die vielen Iterationen zusätzlichen Schutz gegen Brute-Force-Angriffe.

Wie funktioniert der Algorithmus?

Der phpass-Algorithmus erzeugt zunächst einen zufälligen Salt aus 8 Zeichen. Der Hash beginnt mit dem Präfix $P$, gefolgt von einem Zeichen für die Iterationsanzahl (z. B. B = 8192 Iterationen) und dem Salt. Dann wird MD5 wiederholt angewendet: zuerst auf Salt + Passwort, danach wird das Ergebnis zusammen mit dem Passwort erneut gehasht — insgesamt 8192 Mal. Das binäre Ergebnis wird anschließend mit einer eigenen Base64-Kodierung in eine lesbare Zeichenkette umgewandelt. Der endgültige Hash ist immer 34 Zeichen lang.

Ist dieses Tool sicher?

Ja. Alle Berechnungen finden ausschließlich in deinem Browser statt (JavaScript). Es werden keine Passwörter oder Hashes an einen Server gesendet. Du kannst dies jederzeit in den Entwicklertools deines Browsers im Netzwerk-Tab überprüfen.

Typische Anwendungsfälle

  • WordPress-Passwort direkt in der Datenbank zurücksetzen
  • Überprüfen, ob ein Passwort zu einem gespeicherten Hash passt
  • Testen und Entwicklung
  • Migration zwischen WordPress-Installationen

Was steckt hinter einem phpass-Hash?

WordPress speichert Passwörter in der Tabelle wp_users, Spalte user_pass, im phpass-Format — eine portable PHP-Password-Hashing-Library, die Solar Designer 2004 schrieb und die seit WordPress 2.5 (2008) Standard ist. Ein typischer Hash sieht so aus: $P$BvAY9z5z.bC0FzG3p4rXmQE9YkE7gI/ — 34 Zeichen, beginnend mit $P$ als phpass-Marker, gefolgt vom Iterations-Faktor (B = 2^13 = 8192 Runden) und einem 8-Byte-Salt im Base64-Alphabet von phpass.

Intern ist phpass eine iterierte MD5-Konstruktion: Salt + Passwort werden ein erstes Mal mit MD5 gehashed, dann wird der binäre Hash (16 Byte) mit dem Passwort konkateniert und erneut MD5 — und das 8192-mal in Folge. Die finale Ausgabe sind die 22 Base64-Zeichen des letzten Hashs. Dass MD5 als kryptografische Hash-Funktion gebrochen ist (Kollisionsangriffe seit 2004), spielt hier keine Rolle: Für Passwort-Hashing brauchst du preimage resistance, nicht Kollisionsresistenz — und preimages auf MD5 sind nach wie vor offen.

Seit WordPress 6.8 (April 2025) wurde der Algorithmus erweitert: WordPress nutzt jetzt bcrypt (PHP password_hash() mit PASSWORD_BCRYPT) für neue Passwörter — erkennbar am Präfix $wp$2y$. Phpass-Hashes ($P$) werden weiterhin akzeptiert und beim nächsten Login transparent zu bcrypt migriert. Das Tool hier erzeugt im Default $P$ für Rückwärts-Kompatibilität (jede WP-Version 2.5 bis 6.x liest sie); auf Versionen 6.8+ werden sie beim ersten Login automatisch zu $wp$2y$ upgegradet.

So setzt du das Passwort direkt in der Datenbank

Wenn du den Admin-Login verloren hast und kein E-Mail-Reset möglich ist (z.B. SMTP defekt), kannst du den hier generierten Hash direkt in die Datenbank schreiben. Per phpMyAdmin oder MySQL-CLI:

-- 1. Hash hier oben generieren, z.B.:
-- $P$BvAY9z5z.bC0FzG3p4rXmQE9YkE7gI/

-- 2. In der Datenbank ausfuehren:
UPDATE wp_users
SET    user_pass = '$P$BvAY9z5z.bC0FzG3p4rXmQE9YkE7gI/'
WHERE  user_login = 'admin';

-- 3. Pruefen:
SELECT user_login, user_pass FROM wp_users WHERE user_login = 'admin';

-- WICHTIG: das Tabellen-Praefix kann vom Standard 'wp_' abweichen
--          (siehe wp-config.php, Variable $table_prefix).

Typische Einsatz-Szenarien

Du brauchst dieses Tool fast immer in einer dieser fünf Situationen:

  • Notfall-Admin-Reset — der einzige Administrator hat sich ausgesperrt, Password-Reset-Mail kommt nicht durch (E-Mail-Server falsch konfiguriert, in Spam, Mailbox gelöscht). Hash generieren, per phpMyAdmin in wp_users.user_pass schreiben, einloggen. Dauer: 2 Minuten.
  • Staging- und Test-Setups aus einem DB-Dump — du importierst die Production-DB lokal und willst dich als beliebiger User einloggen. Statt das Production-Passwort zu kennen, überschreibst du den Hash für 1-2 Test-User mit einem bekannten Wert (test1234).
  • Migration zwischen WP-Installationen — beim Übertragen von Usern aus einer alten Site (z.B. mit dem User-Switching-Plugin) muss der Hash erhalten bleiben. Mit dem Verify-Modus prüfst du, ob ein bekanntes Passwort tatsächlich zum Hash passt, bevor du migrierst.
  • Custom-User-Provisioning — du schreibst ein Setup-Skript oder einen Bulk-Importer (z.B. 500 neue Kursteilnehmer in einer WP-LMS-Installation) und brauchst Passwort-Hashes, die WordPress sofort akzeptiert. Generiere sie clientseitig, schreib sie per WP-CLI oder direkt per wp_insert_user().
  • Hash-Forensik bei Breach-Verdacht — du untersuchst eine Tabelle wp_users aus einem Backup oder einem geleakten Dump. Du wirfst den Hash in das Verify-Tool, gibst ein verdächtiges Passwort ein (password123, der WP-Default-Admin-Name admin usw.) und siehst sofort, ob jemand schwache Zugangsdaten benutzt hat.

Sicherheitsgrenzen und was phpass nicht löst

phpass mit 8192 MD5-Iterationen ist nach heutigen Maßstäben (OWASP Password Storage Cheat Sheet, NIST SP 800-63B-Rev4 Mai 2025) unter dem empfohlenen Minimum. Bcrypt mit cost=12 oder Argon2id mit 19 MiB Speicher und 2 Iterationen sind die aktuellen Defaults. Auf einer RTX 4090 schafft Hashcat circa 80 MH/s gegen phpass — d.h. ein 8-Zeichen-alphanumerisches Passwort fällt in unter einer Stunde. Konsequenz: Der Hash selbst ist nur die halbe Miete. Wer 2026 noch WP-Sites unter 6.8 betreibt, sollte (1) ein Update auf 6.8+ planen, (2) Admin-Passwörter auf mindestens 16 Zeichen oder eine 6-Wort-Passphrase setzen, (3) WPS-Hide-Login + Limit-Login-Attempts + 2FA-Plugin einrichten. Dieses Tool ist ein Notfall-Werkzeug, kein Sicherheits-Wundermittel.

Häufige Fragen

Funktioniert ein $P$-Hash auch in WordPress 6.8 und höher?
Ja. WordPress 6.8 hat die Schreibseite auf bcrypt ($wp$2y$) umgestellt, akzeptiert beim Login aber weiterhin alle Legacy-Formate ($P$, $H$, sogar das alte ungesalzene MD5 von vor 2008). Beim ersten erfolgreichen Login wird der Hash transparent zu $wp$2y$ upgegradet. Du kannst also auch in 6.8+ einen $P$-Hash in wp_users.user_pass einfügen — der Admin meldet sich an, der Hash wird auto-migriert.
Wo finde ich die wp_users-Tabelle?
In deiner WordPress-Datenbank. Den DB-Namen, User und das Tabellen-Präfix findest du in wp-config.php (Variablen DB_NAME, $table_prefix). Zugriff per phpMyAdmin (über deinen Hoster wie All-Inkl, Strato, Hetzner), Adminer, MySQL Workbench oder per Kommandozeile mysql -u root -p dbname. Achtung: bei Multi-Site- oder umbenannten Installationen kann das Präfix wp_ auch wpsite_, blog123_ oder ein Zufalls-Wert sein.
Generiert das Tool jedes Mal einen anderen Hash für dasselbe Passwort?
Ja — das ist gewollt. Jeder phpass-Hash enthält einen 8-Byte-Salt, der bei jeder Generierung neu aus crypto.getRandomValues() gezogen wird. Daher sehen die Hashes für passwort123 bei zehn Aufrufen zehnmal anders aus. Beim Verify ist das egal: der Salt ist im Hash mitcodiert, das Verify-Verfahren extrahiert ihn und vergleicht das Ergebnis konstant-zeitlich.
Werden meine Passwörter über das Netz gesendet?
Nein. Die gesamte Hash-Berechnung läuft als JavaScript im Browser-Tab. Es gibt keinen Backend-Roundtrip, kein Logging, kein Analytics, das das Passwort oder den Hash sieht. Du kannst das in den DevTools (Tab "Network") überprüfen — beim Klick auf Generieren wird kein Request abgesetzt.
Was ist der Unterschied zwischen $P$ und $H$?
Algorithmisch identisch. $P$ ist der WordPress-portable-Marker, $H$ der phpBB3-Marker für dasselbe Verfahren. Du wirst $H$ manchmal in alten Foren-Datenbanken oder in Plugins sehen, die Cross-Compatibility versuchen. WordPress liest beide, schreibt aber immer $P$ (in 6.8+ $wp$2y$).
Kann ich aus einem Hash das Original-Passwort zurückrechnen?
Nicht direkt — Hash-Funktionen sind einbahn. Aber Hashcat oder John the Ripper können auf einer GPU bei phpass etwa 80 MH/s probieren. Ein 6-Zeichen-Passwort fällt in Sekunden, 8 Zeichen alphanumerisch in unter einer Stunde, 10 Zeichen alphanumerisch in einigen Tagen. Eine 6-Wort-Diceware-Passphrase oder ein 16+ Zeichen Zufalls-Passwort bleibt praktisch sicher. Wenn du legitim einen vergessenen Hash "knacken" musst (eigene Site), nutze die Verify-Funktion mit deiner Passwort-Kandidatenliste statt mit Hashcat — schneller und sicherer.

Verwandte Tools