WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Шаблоны сайтов на русском

wp_hash_password() WP 2.5

Шифрует переданный текст. Шифр всегда получается уникальный. Используется для шифрования паролей.

Создает хэш из простого текста. Хэш всегда получается разный, т.е. если 2 раза одинаково вызвать функцию, результаты будут отличаться. см. пример 1. 

Функция использует класс PasswordHash, который расположен в /wp-includes/class-phpass.php. PasswordHash можно конфигурировать, смотрите пример.

Это pluggable функция — т.е. её можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.

Замена функции (переопределение) — в плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.

Является основой для: wp_set_password()
✈ 1 раз = 0.003847с = очень медленно | 50000 раз = 106.27с = тормоз | PHP 7.2.5, WP 4.9.8

Хуков нет.

Возвращает

Строку, зашифрованный пароль.

Использование

$hash = wp_hash_password( $password );
$password(строка) (обязательный)
Обычный текст (пароль), который нужно зашифровать.

Примеры

#1. Пример работы функции

echo wp_hash_password( 'my_pass' ); //> $P$B1tp3GD53ykbIGC4hf84pvbEjSUloq.

// зашифруем еще раз точно также
echo wp_hash_password( 'my_pass' ); //> $P$Bu3CWn/Y0zTG8IXJ8ee9yiT715tWxG/

#2. Установим глобальную переменную $wp_hasher

Чтобы пароль создавался с нужными нам параметрами:

global $wp_hasher;
$wp_hasher = new PasswordHash(16, FALSE);
$hashedPassword = wp_hash_password($password);

#3. Сравним уже зашифрованный пароль с обычным

$wp_hasher = new PasswordHash( 8, TRUE );

$password_hashed = '$P$B55D6LjfHDkINU5wF.v2BuuzO0/XPk/';
$plain_password  = 'test';

if( $wp_hasher->CheckPassword($plain_password, $password_hashed) ) {
	echo "Пароли совпадают";
}
else {
	echo "Пароль не верный";
}

Код wp hash password: wp-includes/pluggable.php VER 5.1.1

<?php
function wp_hash_password( $password ) {
	global $wp_hasher;

	if ( empty( $wp_hasher ) ) {
		require_once( ABSPATH . WPINC . '/class-phpass.php' );
		// By default, use the portable hash from phpass
		$wp_hasher = new PasswordHash( 8, true );
	}

	return $wp_hasher->HashPassword( trim( $password ) );
}

Cвязанные функции

Из метки: password (пароли)

Еще из метки: Безопасность

Еще из раздела: Защита

2 коммента
  • NewMan

    Пользовался данной функцией, но почему-то выбивает
    "Fatal error: Class 'PasswordHash' not found in /home..."
    Подскажите пожалуйста, как исправить (

    Ответить5.1 лет назад #
    • Kama7363

      Видимо не подключается файл /wp-includes/class-phpass.php. Попробуйте его подключить перед использованием.

      Ответить5.1 лет назад #
Здравствуйте, !     Войти . Зарегистрироваться