Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Генератор случайных паролей
 
 автор: Job   (14.06.2007 в 11:11)   письмо автору
 
 

как сгенерировать СЛУЧАЙНЫМ образом сложный пароль по средствам PHP?

   
 
 автор: bronenos   (14.06.2007 в 11:17)   письмо автору
 
   для: Job   (14.06.2007 в 11:11)
 

Самый простой способ
$password = substr (md5(rand()), 0, 10);

   
 
 автор: Trianon   (14.06.2007 в 11:17)   письмо автору
 
   для: bronenos   (14.06.2007 в 11:17)
 

и хакать его будут ну просто на ура.

   
 
 автор: Петр   (14.06.2007 в 13:17)   письмо автору
 
   для: bronenos   (14.06.2007 в 11:17)
 

Да, но уж очень простой способ генерации, а размер пароля большой (10 символов):
Лучше сделать так:

<?
// Выбирает уникальное значение
// Вырезает не с начала хеш-строки, а с произвольного места;
// Пароль всего 8 символов (можно сделать и 6);
$password substr(md5(uniqid(rand(),true)),rand(0,20),8);
?>

   
 
 автор: Trianon   (14.06.2007 в 13:32)   письмо автору
 
   для: Петр   (14.06.2007 в 13:17)
 

Посчитайте, пожалуйста, сколько всего существует паролей вида [0-9a-f]{6}
и сколько времени затратит машина на подбор такого пароля, если в секунду она перебирает, допустим, сотню тысяч. (очень слабенькая машина, прямо скажу)

   
 
 автор: Trianon   (14.06.2007 в 11:17)   письмо автору
 
   для: Job   (14.06.2007 в 11:11)
 

алфавит и размер известны?

   
 
 автор: Job   (14.06.2007 в 12:45)   письмо автору
 
   для: Trianon   (14.06.2007 в 11:17)
 

Спасибо мне и такой вариант подайдет :)

   
 
 автор: Temnovit   (14.06.2007 в 12:52)   письмо автору
 
   для: Job   (14.06.2007 в 11:11)
 


<?
public static function pass_gen($char_count 10) {
           
$randstr '';
           for (
$i 0$i $char_count $i++) {
              
$randnum mt_rand(0,61);
           if (
$randnum $char_count)
              
$randstr .= $randnum;
           else if (
$randnum 36)
              
$randstr .= chr($randnum+55);
           else
              
$randstr .= chr($randnum+61);
        }
        return 
strtolower($randstr);
     }
?>

   
 
 автор: Trianon   (14.06.2007 в 13:15)   письмо автору
 
   для: Temnovit   (14.06.2007 в 12:52)
 

попробуйте вызвать её с параметром 4 5 6...
тьфу...
Я понимаю, что задача нетривиальная, но делать такие ошибки - в таких задачах - непростительно.

   
 
 автор: Temnovit   (14.06.2007 в 13:46)   письмо автору
 
   для: Trianon   (14.06.2007 в 13:15)
 

Решение не мое. Но обыграл я его не правильно - это да.
http://www.php.net/manual/ru/function.chr.php#69409

   
 
 автор: Trianon   (14.06.2007 в 13:53)   письмо автору
 
   для: Temnovit   (14.06.2007 в 13:46)
 

ну там оно хотя бы без явных ошибок :)))

   
 
 автор: Job   (14.06.2007 в 14:11)   письмо автору
 
   для: Trianon   (14.06.2007 в 13:53)
 

не, мне на всё это пофигу, мне не для этих целей :) взламывать и подбирать никто ничего не будет... :)

   
 
 автор: Unkind   (14.06.2007 в 14:12)   письмо автору
 
   для: Job   (14.06.2007 в 14:11)
 


<?php
function random($length)
{
$passwd "";
$chars "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqR rSsTtUuVvWwXxYyZz0123456789";
for(
$i 0$i $length$passwd .= $chars[rand(0strlen($chars) - 1)], $i++);
return 
$passwd;
}

echo(
random(10));
?>

   
 
 автор: Trianon   (14.06.2007 в 14:19)   письмо автору
 
   для: Unkind   (14.06.2007 в 14:12)
 

array_rand() работает со строкой, как с массивом символов?

   
 
 автор: Unkind   (14.06.2007 в 14:22)   письмо автору
 
   для: Trianon   (14.06.2007 в 14:19)
 

array_rand() работает со строкой, как с массивом символов?
Нет. :)

   
 
 автор: Trianon   (14.06.2007 в 14:18)   письмо автору
 
   для: Job   (14.06.2007 в 14:11)
 

тогда зачем Вам
а) генератор вчастности?
б) пароль вообще?
:))))

   
 
 автор: Job   (14.06.2007 в 14:23)   письмо автору
 
   для: Trianon   (14.06.2007 в 14:18)
 

скорее

а) случайным образом выводить имя файла
б) нафиг не нужен, сам придумать могу :)

Сегодня ко мне излишне повышенное внимание :)

всегда бы так...

блин, а чего так форум глючит. вот дела.... :)

   
 
 автор: Unkind   (14.06.2007 в 14:24)   письмо автору
 
   для: Job   (14.06.2007 в 14:23)
 

скорее а) :)
Вопрос был "тогда зачем Вам?".

   
 
 автор: bronenos   (14.06.2007 в 14:27)   письмо автору
 
   для: Unkind   (14.06.2007 в 14:24)
 

трианон, может вы свой предложите?
я бы накропал, да реферат делаю

   
 
 автор: Trianon   (14.06.2007 в 14:56)   письмо автору
 
   для: bronenos   (14.06.2007 в 14:27)
 

>трианон, может вы свой предложите?
>я бы накропал, да реферат делаю
пока вопрос (14.06.2007 в 11:17) проигнорирован - врядли. Смысла нет.
Да и автору он не нужен, как оказалось...
Ему нужна функция tempnam, но он решил поговорить о паролях :))

   
 
 автор: Job   (14.06.2007 в 15:35)   письмо автору
 
   для: Trianon   (14.06.2007 в 14:56)
 

а ктож знал такую функцию...

Главное я цели достиг :Р

   
 
 автор: mefestofel   (14.06.2007 в 17:33)   письмо автору
 
   для: Job   (14.06.2007 в 11:11)
 


srand((double)microtime()*1000000);
$id=uniqid(rand());

   
 
 автор: Саня   (15.06.2007 в 02:34)   письмо автору
 
   для: Job   (14.06.2007 в 11:11)
 

<?
function passgen ($length) {
  
$chr 'ABCDEFGHJKLMNPQRSTUVWXYZ'.
         
'abcdefghijkmnopqrstuvwxyz'.
         
'0123456789!#@$%*&_+';
  while ( 
strlen($chr) < $length $chr .= $chr;
  return 
substr(str_shuffle($chr), 0$length);
}

   
 
 автор: Витос   (15.06.2007 в 18:11)   письмо автору
 
   для: Саня   (15.06.2007 в 02:34)
 

?>
:-D

   
 
 автор: Trianon   (15.06.2007 в 18:20)   письмо автору
 
   для: Витос   (15.06.2007 в 18:11)
 

верхняя xml-скоба здесь пишется, чтобы включить цветовыделение.
Нижняя - чтобы язык показать - совсем не нужна.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования