Генерация паролей
Очень часто приходиться генерировать пароли, и казолось бы что тут сложного? Написал себе функцию и генерируй на здоровье. Для генерации обычно берут цифры от 0 до 9 и латинцкие символы от A до Z. И редко кто задумывается о том что в некоторых шрифтах, с некоторой слепотой 0 от O или o никак не отличить. Или 1 от l. Так сидеть, и мучаются пользователи, гадая какой это символ. Поэтому моя функция генерации пароля использует слегка обработанный набор символов для генерации, так что бы похожих символов небыло.
Собственно сам код:
function gen_passwd ( $len) {
$res = '';
$useChars = '23456789ABCDEFGHKMNPQRSTUVWXYZabcdefghkmnpqrstuvwxyz';
$useChars .= $useChars;
for ($i = 0; $i < $len; $i++ ) {
$res .= $useChars[mt_rand ( 0, strlen ( $useChars)-1)];
}
return $res;
}













таким образом получаются пароли, которые пользователю невозможно запомнить.
нужен какой-то другой принцип. например (не проверял, просто идея)
function gen_passwd ( $len) {
$res = ”;
$useChars[1] = ‘aequy’;
$useChars[2] = ‘ldcxthprplcl’;
$useChars[3] = ‘aequy’;
$useChars[4] = ‘bcdfghkmnprstvwxz’;
$count=0;
for ($i = 0; $i 4) $count=1;
$le=1;
if ($count==2) $le=2;
$tot = strlen ( $useChars[$count])/$le);
$my=mt_rand(0,$tot-1);
$res .= $useChars[$count].substr($my*$le,$le);
}
return $res;
}
Приблизительно так. Тогда и пароли будут человеческими :)
ald
$useChars[1] = ‘aequy’;
$useChars[2] = ‘ldcxthprplcl’;
$useChars[1] = ‘aequy’;
$useChars[3] = ‘bcdfghkmnprstvwxz’;
aldebethucl или там eprekecl. В общем, генерацию нужно основывать на слогах. Иначе пользователь рад этому не будет.
//zloba
Лично я смотрю с такой точки зрения: Если не можешь запомнить пароль - поменяй на свой, который тебе более удобен, а то всё равно забудешь. Там более его обязательно надо поменять на свой.
Вообще, в мои обязаности входит выдать достаточно защищённый пароль. Как с ним будет вести себя пользователь - меня немного волнует меньше. Дальше уже он отвечает за свою-же безопастность.
Понимаешь, если ты сделал пароль, который нужно менять, то человек уже с 95% вероятностью поставит небезопасный пароль. Поэтому нужно предлагать что-то запомнить. Хотя и можно отмахнуться что это, мол, не мешает и дальше будет вина пользователя.
Согласен, но поменяет он его в любом случае - пароль хоть и удобней, но чужой. Юзер свой собственный теряет/забывает часто, а тут - чужой. В любом случае, пока я работал в тех. поддержке - часто звонили и просили напомнить пароль - даже если сами меняли на что-либо своё - привычное. Далее, очень часто пользователи держат свой пароль в электропочте, но не знают, что пароль можно просто скопировать оттуда, а набирают его, и в случае если там хитрый шрифт - часто путают символы ноля и О, л(l) и 1, И(I) и л(l) (естественно в латинице). Слепые, не внимательные, шрифт какой… Так что если соединить два алгоритма - будет совсем не плохо.
Говорят, от мелкософта было более навороченное предложение с генерацией паролей.
В OS X встроена генерилка паролей =)