Как WordPress шифрует пароль?

Возможный дубликат:
Как проверить пароль сгенерированный WordPress в БД с помощью PHP?

Я работаю с сайтом, который выполняется с помощью WordPress, и мне нужно добавить некоторые части, которые находятся за пределами WP, и проверить вход пользователя в систему, но я не могу найти, как WP шифрует пароль, прежде чем записывать его в DB …

Я пытался с md5, но это не …

Кто-нибудь знает, как проверить пароль за пределами WP, не используя его pluggins / checkers, очистить PHP-код?

Solutions Collecting From Web of "Как WordPress шифрует пароль?"

Библиотека шифрования паролей находится в /wp-includes/class-phpass.php. Это переносимая PHP-хеширование .

Похоже, вы хотите использовать внешний код для проверки имени пользователя / паролей в базе данных WP. Если это правильно, вы потратите много времени на изобретательство колеса. Но для хорошего примера того, как это сделать, используя прямой PHP, неплохо взглянуть на основные функции WP, которые уже делают это.

Дело в том, `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); } 

Во-первых, WordPress проверяет, использует ли хешированный пароль пользователя все еще использование MD5 для старой безопасности. Это необходимо для обеспечения обратной совместимости для обновлений. Если пароль MD5, то WordPress автоматически заменит его новым хешем с использованием новой системы (вызов wp_set_password() ). Если это не MD5, тогда WP переходит к новой настройке хэширования.

Во-первых, мы включаем Portable Hash Framework Framework (уже упомянутый в статье @John Watson в другом ответе) и создаем его экземпляр, сохраняя его в глобальной переменной $wp_hasher .

Затем мы передаем пароль открытого текста и хэш, чтобы проверить его, используя метод CheckPassword() библиотеки.

Если вы хотите использовать это во внешней библиотеке, вам нужно сначала include / require библиотеку, затем создать ее экземпляр, а затем передать свой простой текстовый пароль и его хэш. Итак, какой-то непроверенный psuedo-код …

 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 );