[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Генератор паролей
molet
  echo generate_password(8);

function generate_password($number)
{
$arr = 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','1','2','3','4',
'5','6','7','8',
'9','0',);
// Генерируем пароль
$pass = "";
for($i = 0; $i < $number; $i++)
{
// Вычисляем случайный индекс массива
$index = rand(0, count($arr) - 1);
$pasw .= $arr[$index];
}
if (!ereg("[^0-9]", $pass)){
???}
else{
return $pass;}
}


Что должно быть вместо ???, чтобы если попадаються цифры в пароле, выполнялся подбор пароля до тех пор пока в нем не будет цифр?



Спустя 2 часа, 45 минут, 16 секунд (23.07.2010 - 00:15) KaFe написал(а):
function generate_password($number)
{
$arr = 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','1','2','3','4', '5','6','7','8', '9','0',);
for($i = 0; $i < $number; $i++)
{
$index = rand(0, count($arr) - 1);
$pasw .= $arr[$index];
}
$pass=substr(md5($pasw),1,$i);
return $pass;
}

Пароль может состоять максимум из 31 символа, это из за того что кодируют md5 в 31 символ wink.gif

Спустя 21 минута, 42 секунды (23.07.2010 - 00:37) molet написал(а):
А причем здесь md5?

Пароль gdfrt46 и f787fhj не подгодят, потому что в них есть цифры.
Пароль нужен без цифр (как пример): fghydh или jkkwiuq.

Спустя 54 минуты, 8 секунд (23.07.2010 - 01:31) SlavaFr написал(а):
Цитата (molet @ 22.07.2010 - 21:37)
Пароль gdfrt46 и f787fhj не подгодят, потому что в них есть цифры.

A зачем тогда вообще в масиве цифры загонять?
убери цифры и ненадо тебе не какого erreg вообще.

Спустя 43 минуты, 43 секунды (23.07.2010 - 02:14) Ice написал(а):
Цитата (KaFe @ 23.07.2010 - 01:15)
Пароль может состоять максимум из 31 символа, это из за того что кодируют md5 в 31 символ 

32

@ molet

function passgen($length)
{
$pass = "";
for( $i = 0; $i < $length; $i ++ ) {
$pass .= chr( mt_rand( 97, 122 ) );
}
return $pass;
}

так проще

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

function passgen($length)
{
$pass = "";
for($i = 0; $i < $length; $i ++) {
$j = mt_rand( 1, 2 );
if( $j % 2 )
$pass .= chr( mt_rand( 97, 122 ) ) ;
else
$pass .= chr( mt_rand( 65, 90 ) ) ;
}
return $pass;
}

И никаких ерегов, массивов и прочего ненужного хлама.
Офигенные парольчики. Они прекрасны smile.gif

GuclWrvV
iCSiBXkW
RzuZGojH
SSoHnswe
VRvBnRDv
DFUlrJty
GBLLoIUZ
zLRzeMdl
HVKhaaGb
pjlmCczX

Спустя 4 часа, 41 минута, 46 секунд (23.07.2010 - 06:56) Basili4 написал(а):
Ice
Пароли без цифер. Это как мужик без..... и вроде хорош, и пригож, но для чего ....

Афоризм запишите. Может кто будет цетировать лет через 200. wink.gif

Спустя 2 часа, 41 минута, 36 секунд (23.07.2010 - 09:38) molet написал(а):
С одной стороны да, но как же быть если:
echo generate_password(8);

function generate_password($number)
{
$arr = 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','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','1','2',
'3','4','5','6','7','8',
'9','0','!','@','#','$',
'%','^','&','*','(',')',
'?');
// Генерируем пароль
$pass = "";
for($i = 0; $i < $number; $i++)
{
// Вычисляем случайный индекс массива
$index = rand(0, count($arr) - 1);
$pasw .= $arr[$index];
}
if ((!ereg("^[0-9]", $pass) and !ereg("[0-9]{2}")){
continue;}
else{
return $pass;}
}

Как быть в случае, если в пароли не должно быть:
1. Двох одинаковых букв рядом одна с одной.
2. Не более двох большых букв подряд.
3. Двох спецсимволов подряд.
4. Пароль не должен начинатса с цифры или спецсимвола
5. и не должен заканчиватса спецсимволом


Спустя 4 минуты, 42 секунды (23.07.2010 - 09:43) Basili4 написал(а):
molet
Мне тут мнится что регуляркой такие условия ты не одолеешь надо посимвольный анализировать щас напишу код запостю

Спустя 15 минут, 51 секунда (23.07.2010 - 09:58) Basili4 написал(а):

<?php

function
randomChar()
{
$arr = 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','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','1','2',
'3','4','5','6','7','8',
'9','0','!','@','#','$',
'%','^','&','*','(',')',
'?');

return $arr[array_rand($arr)];
}

function GenPwd($count)
{

$pwd=randomChar();
for ($i=1; $i<=$count; $i++)
{

do
$ch=randomChar();

while($pwd[$i-1]==$ch or (ord($pwd[$i-1])>=65 and ord($pwd[$i-1])<=90 and ord($ch)>=65 and ord($ch)<=90) );

$pwd.=$ch;

}

return $pwd;
}

for ($i=0; $i<10000; $i++)
echo GenPwd(5)."<Br />";
?>



Спустя 3 часа, 36 минут, 20 секунд (23.07.2010 - 13:35) Ice написал(а):
Цитата (Basili4 @ 23.07.2010 - 07:56)
Пароли без цифер. Это как мужик без..... и вроде хорош, и пригож, но для чего ....

Ну, просил, - получил, хотя щас я уверен, что он сам не знает, что ему надо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.