Генерация сложных паролей средствами PHP
Как правило - пароль пользователи придумывают сами, но порой необходимо сгенерировать пароль в системе и выдать его пользователю(как например в голосе).
Чтобы пароль был уникальным и сложным - его необходимо сгенерировать с использованием букв в разных регистрах, чисел и спецсимволов.
Написать такой скрипт совсем просто, давайте сделаем это.
Для начала разобьём все необходимые символы на группы:
$groups = [];
$groups[] = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','x','y','z'];
$groups[] = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','V','X','Y','Z'];
$groups[] = ['1','2','3','4','5','6','7','8','9','0'];
$groups[] = ['.',',','(',')','[',']','!','?','&','^','%','@','*','$','<','>','/','|','+','-','{','}','`','~'];
Для будущего пароля создадим переменную:
$password = [];
Для этого обходим массив $groups
:
foreach ($groups as $group) {
// перемешиваем элементы массива
shuffle($group);
// из полученного массива берем первые 3-7 символов
$symbols = array_slice($group, 0, rand(3, 7));
// складываем в массив $password
$password = array_merge($password, $symbols);
}
Перемешиваем элементы массива $password
:
shuffle($password);
Превращаем массив в строку:
$password = implode('', $password);
Проверяем
echo $password;
Так же для генерации пароля можно отталкиваться от текущего времени и хэшировать его. Суть от этого фактически не поменяется, а скорость работы аналогичного скрипта практически не изменится.
Листинг кода https://pastebin.com/AMSjanUh
Запустить код в песочнице