Закодировать строку как пароль

❗ Пароли не следует хранить в открытом виде. Даже в базе данных.

1-ый способ: password_hash (рекомендуется)

В PHP есть функция для генерации пароля — password_hash().

$password = password_hash('пароль', PASSWORD_DEFAULT);
echo $password; // $2y$10$hAZy/dJkbOo6VwqJphP7A.Z1qfFbTBgGZMzRUe1gSlOYmhFyeVlQW

Проверить пароль можно через функцию password_verify().

$userPasswordFromDb = '$2y$10$hAZy/dJkbOo6VwqJphP7A.Z1qfFbTBgGZMzRUe1gSlOYmhFyeVlQW';

if (password_verify('пароль', $userPasswordFromDb)) {
    echo 'Пароль введён правильно';
}

Функция password_hash() автоматически добавляет «соль» к паролю (т.е. для одной и тойже строки каждый раз генерируется новое значение).

По умолчанию используется алгоритм хеширования bcrypt (алгоритм разработан в 1999 году для хранения паролей).

Функция password_hash() доступна с версии PHP 5.5.0.

2-ой способ: crypt (для более старых версий)

Рекомендуется использовать на сайтах, на которых PHP установлен меньше версии PHP 5.5.

$user_password = 'password';
$salt = '$1$adsyu&823ji$';

crypt($user_password, $salt); // $1$adsyu&82$cG6Jx1S.y69G7PZoVY4cP/

3-ий способ: md5 (не рекомендуется)

Данный способ указан в качестве примера, использовать его не рекомендуется. Об этом также указано в официальной документации php.net/manual/ru/function.md5.php.

md5('password'); // 5f4dcc3b5aa765d61d8327deb882cf99