понедельник, 19 сентября 2011 г.

Генератор читабельного пароля на PHP


Стойкие пароли, состоящие из всевозможных символов и букв в разном регистре, штука, конечно хорошая! Но не стоит забывать, что один лишь вид подобных "произведений искусства"  вызывает естественное чувство отторжения мало кто отважится набивать каждый раз такое вручную:
k*qT$6GQT3

Про людей которые помнят на память несколько серийных кодов для Windows ходят легенды, думаю, что такие пароли  придумали именно для них.


Ну а нормальный человек с удовольствием запишет этот пароль в отдельный файл, менеджер паролей или просто заменит на чей-то день рождения или что там еще... Обидно, да?


Имеет резон сделать генератор, который будет создавать запоминающийся пароль.Вот простой пример:


<?php
function generate_password($length = 10){
    $chars1 = 'aeiouy';
    $chars2 = 'bcdfghklmnprstvz';
    $password = '';
    $bound = ceil($length/2.0);
    for ($i=0; $i<$bound; $i++){
        $password .= substr($chars2, mt_rand(0, strlen($chars2)-1), 1);
        if (strlen($password) < $length){
            $password .= substr($chars1, mt_rand(0, strlen($chars1)-1), 1);
        }
    }
    return $password;
}
 
print generate_password(6);
?>

Тут все элементарно - случайные гласные чередуются со случайными согласными.

Вот примеры паролей, созданных данным скриптом:

pepelo
keneso
rezimo
legino
mobify
pohony
zanuzi
favyry
nynuvi


На базе этого кода можно генерировать достаточно стойкие пароли, которые проще читать и вводить. Я использую код посложнее для реализации различных политик по безопасности пароля, но идея, думаю, понятна.