WP_HASH_PASSWORD() │ Создание хеша пароля в WordPress

## WP_HASH_PASSWORD() │ WP 2.5.0

Функция WP_HASH_PASSWORD() используется для создания хеша пароля на основе заданного текста. Это значит, что вы можете превратить обычный текстовый пароль в зашифрованный вид, который хранится в базе данных.

### Что такое хеш?

Хеш — это уникальный код, который создается для пароля. Даже если вы вызовете эту функцию дважды с одним и тем же паролем, результаты будут разными. 

В WordPress эта функция использует класс **PasswordHash**, который находится в файле wp-includes/class-phpass.php. Вы можете настроить **PasswordHash** для ваших нужд.

### Плагин и переопределение функции

Эта функц��я является "плагинной", что значит, что ее можно переопределить в вашем плагине. Она становится доступной только после загрузки всех плагинов. Поэтому вызвать эту функцию из кода плагина можно только в момент загрузки плагина (plugins_loaded) или позже, например, на этапе инициализации (init).

Если вы хотите изменить (переопределить) эту функцию, вы можете создать функцию с тем же именем в вашем "must-use" или обычном плагине.

### Применение функций

Функция wp_set_password() использует WP_HASH_PASSWORD() для установки пароля пользователя.

**Время выполнения:** 
- 1 вызов — 0.003847 сек (очень медленно)
- 50000 вызовов — 106.27 сек (крайне медленно)
- Версия PHP: 7.2.5, Версия WP: 4.9.8

### Возврат значения

Функция возвращает строку — хешированный пароль.

### Использование функции

```php
wp_hash_password( $password );
  • $password (строка, обязательный параметр) — обычный текст пароля пользователя, который нужно зашифровать.

Примеры использования

Пример 1: Создание хеша пароля

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

// зашифруем снова тем же способом
echo wp_hash_password( 'my_pass' ); //> $P$Bu3CWn/Y0zTG8IXJ8ee9yiT715tWxG/

Пример 2: Установка глобальной переменной для создания пароля с заданными параметрами

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 "Пароль неверный";
}

Замечания

  • Глобальная переменная. Объект PHPass $wp_hasher.

История изменений

  • С версии 2.5.0 — введено.

Код функции WP_HASH_PASSWORD()

function wp_hash_password( $password ) {
    global $wp_hasher;

    if ( empty( $wp_hasher ) ) {
        require_once ABSPATH . WPINC . '/class-phpass.php';
        // По умолчанию используется портативный хеш от phpass.
        $wp_hasher = new PasswordHash( 8, true );
    }

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

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

  • PASSWORD

    • check_password_reset_key()
    • get_password_reset_key()
    • wp_check_password()
    • wp_generate_password()
    • wp_get_password_hint()
    • wp_set_password()
  • Безопасность сайта

    • balanceTags()
    • current_user_can()
    • force_balance_tags()
    • is_ssl()
    • wp_create_nonce()
    • wp_nonce_field()
    • wp_nonce_url()
    • wp_verify_nonce()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *