Wie verschlüsselt WordPress Passwort?

Mögliche Duplikate:
Wie validiere ich WordPress generierte Passwort in DB mit PHP?

Ich arbeite mit einer Site, die mit WordPress erstellt wurde, und ich muss einige Teile außerhalb von WP hinzufügen und die Benutzeranmeldung überprüfen, aber ich kann nicht herausfinden, wie WP das Passwort verschlüsselt, bevor es in DB geschrieben wird …

Ich habe es mit md5 versucht, aber es ist nicht …

Kann jemand das Passwort außerhalb von WP überprüfen, ohne Plugins / Checker zu verwenden, PHP-Code löschen?

Solutions Collecting From Web of "Wie verschlüsselt WordPress Passwort?"

Die Passwortverschlüsselungsbibliothek befindet sich in /wp-includes/class-phpass.php. Es ist das Portable PHP Password Hashing Framework .

Es klingt, als ob Sie externen Code verwenden möchten, um Benutzernamen / Kennwörter für die WP-database zu validieren. Wenn das stimmt, wirst du viel Zeit damit verbringen, das Rad neu zu erfinden. Aber für ein gutes Beispiel, wie man dies mit reinem PHP macht, ist es eine gute Idee, einen Blick auf die core-WP-functionen zu casting, die es bereits tun.

Case in point, wp_check_password ():

function wp_check_password($password, $hash, $user_id = '') { global $wp_hasher; // If the hash is still md5... if ( strlen($hash) < = 32 ) { $check = ( $hash == md5($password) ); if ( $check && $user_id ) { // Rehash using new hash. wp_set_password($password, $user_id); $hash = wp_hash_password($password); } return apply_filters('check_password', $check, $password, $hash, $user_id); } // If the stored hash is longer than an MD5, presume the // new style phpass portable hash. if ( empty($wp_hasher) ) { require_once ( ABSPATH . 'wp-includes/class-phpass.php'); // By default, use the portable hash from phpass $wp_hasher = new PasswordHash(8, TRUE); } $check = $wp_hasher->CheckPassword($password, $hash); return apply_filters('check_password', $check, $password, $hash, $user_id); } 

Zuerst überprüft WordPress, ob das Hash-Passwort des Benutzers immer noch das alte MD5 für die Sicherheit verwendet. Dies dient dazu, die Abwärtskompatibilität für Aktualisierungen beizubehalten. Wenn das Kennwort MD5 ist, wird WordPress es automatisch mit einem neuen Hash unter Verwendung des neuen Systems ersetzen (der Aufruf von wp_set_password() ). Wenn es nicht MD5 ist, dann geht WP zu dem neueren Hash-Setup über.

Zuerst schließen wir das Portable PHP Hashing Framework ein (bereits von @John Watson in einer anderen Antwort erwähnt) und erstellen eine Instanz davon, die es in der globalen Variablen $wp_hasher .

Wir übergeben dann das Klartextpasswort und den Hash, um es zu verifizieren, indem CheckPassword() die CheckPassword() Methode der Bibliothek verwenden.

Wenn Sie dies in einer externen Bibliothek verwenden möchten, müssen Sie zuerst die Bibliothek einbeziehen / require , dann instanziieren und dann Ihr Klartextpasswort und den Hash-Code übergeben. Also einige ungeprüfte Pseudo-Code …

 function validate_password( $plaintext, $hash ) { require_once( 'class-phpass.php' ); $hasher = new PasswordHash(8, TRUE); return $hasher->CheckPassword( $plaintext, $hash ); } 
 require_once( '/path/to/wp-includes/class-phpass.php' ); $wp_hasher = new PasswordHash( 8, TRUE ); $password = 'swordfish'; $hashed_password = $wp_hasher->HashPassword( $password );