Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Генерация сложных паролей средствами 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

Запустить код в песочнице

8
105.441 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые