Как сгенерировать случайный пароль
Короткий ответ
Выбирайте символы из набора функцией random_int():
<?php
function randomPassword(int $length = 12): string
{
$chars = 'abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789';
$password = '';
for ($i = 0; $i < $length; $i++) {
$password .= $chars[random_int(0, strlen($chars) - 1)];
}
return $password;
}
echo randomPassword();Почему не rand() и не shuffle()
rand(), mt_rand(), str_shuffle() и shuffle() предсказуемы. Для паролей и токенов подходят только random_int() и random_bytes(). В наборе выше нет похожих символов — 0 и O, 1 и l, — чтобы пароль было легко прочитать.
Функции из этого ответа
- random_int — Возвращает случайное целое число из диапазона.
- str_repeat — Повторяет строку заданное число раз.
- random_bytes — Возвращает случайные байты, пригодные для защиты.