Erstelle WordPress-kompatible Passwort-Hashes (phpass) und überprüfe bestehende Hashes direkt im Browser.
{{ hash }}
Gib ein Passwort ein, um einen WordPress-Hash zu generieren.
| {{ __t('info_algorithm') }} | {{ hashInfo.algorithm }} |
| {{ __t('info_iterations') }} | {{ hashInfo.iterations }} |
| {{ __t('info_salt') }} | {{ hashInfo.salt }} |
| {{ __t('info_valid_format') }} | {{ hashInfo.valid ? '✓' : '✗' }} |
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.
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.
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.
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.
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).
Du brauchst dieses Tool fast immer in einer dieser fünf Situationen:
wp_users.user_pass schreiben, einloggen. Dauer: 2 Minuten.test1234).wp_insert_user().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.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.
$P$-Hash auch in WordPress 6.8 und höher?$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.wp_users-Tabelle?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.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.$P$ und $H$?$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$).