PHP: <?php error_reporting(E_ALL); $up_reg = (isset($_POST['up_reg']))? 'checked="checked"' : NULL ; // верхний регистр $down_reg = (isset($_POST['down_reg']))? 'checked="checked"' : NULL ; // нижний регистр $num = (isset($_POST['num']))? 'checked="checked"' : NULL ; // цифры $symbols = (isset($_POST['symbols']) && ctype_digit($_POST['symbols']) && $_POST['symbols'] > 0 && $_POST['symbols'] <= 30)? $_POST['symbols'] : 9 ; // кол-во символов $password = NULL; if(isset($_POST['do'])) { $up_letters = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'L', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); $down_letters = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); $numbers = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); $sym_array = array(); if($up_reg) $sym_array = array_merge($sym_array, $up_letters); if($down_reg) $sym_array = array_merge($sym_array, $down_letters); if($num) $sym_array = array_merge($sym_array, $numbers); $symbols_num = count($sym_array); $i = 0; while($i < $symbols && $symbols_num) { $password = $password.$sym_array[rand(0, ($symbols_num - 1))]; $i++; } } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> <meta name="author" content="Илья Владимирович Пирогов aka Hight" /> <title>Генератор паролей</title> <style type="text/css"> html, body{ margin:0px; height:100%; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; } input.text{ width:180px; } input.submit{ font-weight:bold; } </style> </head> <body> <table width="100%" height="100%" border="0px"> <tr> <td align="center" valign="middle"> <form action="passgen.php" method="post"> <input type="hidden" name="do" /> <table cellpadding="0px" cellspacing="0px" border="0px" style="border:#000000 solid 1px;"> <tr> <td colspan="2" style="padding:9px; background-color:#d7d6d6;">Генератор паролей</td> </tr> <tr> <td valign="middle" style="border-right:#999999 solid 1px;"> <table cellspacing="0px" cellpadding="9px"> <tr> <td align="right">Пароль</td> <td align="left"><input type="text" value="<?php echo $password ?>" class="text" /></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Сгенерировать" class="submit" /></td> </tr> </table> </td> <td valign="top" style="padding:9px;"> <fieldset><legend>Настройки</legend> <table cellpadding="5px" cellspacing="0px" border="0px"> <tr> <td>Верхний регистр</td><td><input type="checkbox" name="up_reg" <?php echo $up_reg; ?> /></td> </tr> <tr> <td>Нижний регистр</td><td><input type="checkbox" name="down_reg" <?php echo $down_reg; ?> /></td> </tr> <tr> <td>Цифры</td><td><input type="checkbox" name="num" <?php echo $num; ?> /></td> </tr> <tr> <td>Кол-во символов</td><td><input type="text" name="symbols" value="<?php echo $symbols; ?>" style="width:23px;" /></td> </tr> </table> </fieldset> </td> </tr> </table> </form> </td> </tr> </table> </body> </html> Мне просто нех делать.
Для безопасности требуется пароль не менее 8 символов с использованием букв в верхнем и нижнем регистрах, цифрами и спецсимволами.
klerick, раздайте секретаршам в офисе пароли в стиле: yU_o9e]!x9*)fG'! думаю в тот же день на каждом мониторе появится бумажка с паролем. Безопасность от этого, разумеется, вырастет многократно
На самом деле мне есть что делать. Генератор паролей я написал, чтобы из головы пасворды не брать. Надо было набить с тысячу учёток с паролями
Hight Сегодня (совпадение) искал генератор паролей. В гугле твоя версия самая популярная Если интересно, то могу ссылку на генератор кинуть, который имеет не меньше двух преимуществ
Написал в браузере за минуту PHP: <? function GenPass($length=5,$usestr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"){ static $pass_save; if(!$pass_save)$pass_save=array(); $pass=''; $usestr=preg_split("##",$usestr); while(true){ $pass.=$usestr[rand(0,count($usestr)-1)]; if(rand(0,1))$pass=strtolower($pass); if(strlen($pass)==$length){ if(!in_array($pass,$pass_save)){ break; }else{ $pass=''; } } } $pass_save[]=$pass; return $pass; } ?>
PHP: <?php $usestr="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz"; echo substr(str_shuffle($usestr), 0, 8); ?> 2Mr.M.I.T.:
Неплохая задумка, если не слишком важна длина полученного результата, так как в данном примере, она может не соответствовать указанному минимуму в 8 символов. P.S.: И как уже было правильно замечено, нет предела совершенству!
ud0, а в каком таком месте, тут не 8 символов? Код (Text): shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' 2b{fbskA shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' @rj7g52Z shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' 8eEzR7pZ shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' b@1Di`?X shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' Reu1R`B< shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' P0ArhZ8f shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' ;:|[12^3 shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' [p7U>0VI shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' ]E\5EmdM shock@shock:~$ php -r 'for($i=8;$i--;print chr(rand(48,126))); echo "\n";' v^8Csv7v