[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: скрипт генерирования пароля
Lowfog
подскажите, почему не генерируется пароль(выдает 0):
<?php
$abc='ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz1234567890'; //таблица символов
$base=strlen($abc); //длмна строки

//дата

$dt=getDate();
$year=($dt["year"]%100); //остаток от деления на 100
$month=$dt["mon"];
$day=$dt["day"];

$n=$year+113*($month+$day*13)+77933*(rand(0,78)+11); //закодированное время
$n2=rand(0,632145);

$n=$n+$n2; //добавление случайного числа

function to_n($N,$n){ // N=n ; n=base
$i=0;
while ($N>0 && $i<20){
$t[$i]=$N % $n; //находим остаток отделения
$N=floor($N/$n); //находим оставшуюся часть поле деления
$i++;
}
return $t;
}

function to_s($t){
echo("\n abc: ".$abc);
$i=1;
for($i=1;$i<=4;$i++){
if($t[5-$i]==0){
$p=1;
}else{
$p=$t[5-$i]+1;
}
echo("\n [p]".$p);
$s+=$abc[$i]; //извлекаем символ строки
echo("\n s:".$s);
echo("\n abc:".$abc[$i]." ");
}

echo("\n strlen(abc):".strlen($abc)." ");
return $s;
}
to_s(32);
echo($s);

for($i=0;$i<5;$i++){
echo("\n a:".$i);
echo("\n t[i]:". $t[$i]);
}
$password+=to_s(to_n($n,$base));
echo("\n password:".$password." \n" );

?>


копия кода в прикрепленном файле



Спустя 20 минут, 22 секунды (4.02.2010 - 14:07) Soldier Ghost написал(а):
ничё се генератор

Спустя 29 минут, 32 секунды (4.02.2010 - 14:37) twin написал(а):
Не мучайся, вот:

function generatePass($len = 8)
{
$a = range('!', '@');
$b = range('a','z');
$c = range('A', 'Z');
$a = array_merge($a, $b);
$a = array_merge($a, $c);
shuffle($a);
$a = array_slice($a, 0, $len);
return implode('', $a);
}

echo "\n password:". generatePass(10);

Спустя 28 минут, 25 секунд (4.02.2010 - 15:05) Lowfog написал(а):
Спасибо за подсказку, Ваш вариант подошел бы,
если бы мне не надо было бы делать привязку ко времени. А также скрипт написан на другом языке, все остальное тоже уже адаптировано под мой скрипт и осталось только корректно перевести на php.

Спустя 16 минут, 2 секунды (4.02.2010 - 15:21) twin написал(а):
Странно это всё... Зачем ко времени привязывать, просто любопытно?

Спустя 28 минут, 8 секунд (4.02.2010 - 15:49) Guest написал(а):
///////////////////////////////
//
// Генерация пароля
//

function Password($length = 8){
$chars = 'abdefhiknrstyzABDEFGHKNQRSTYZ23456789';
$numChars = strlen($chars);
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= substr($chars, rand(1, $numChars) - 1, 1);
}
return $string;
}

Спустя 9 минут, 9 секунд (4.02.2010 - 15:58) Lowfog написал(а):
это генератор пароля системы оплаты компьютерной игры. Все просто. играть бесплатно можно 3 дня с момента установки игры

Спустя 13 минут, 13 секунд (4.02.2010 - 16:12) twin написал(а):
Во этой мешанине никакой связи со временем действия пароля я не вижу.
Ну да дела барское.
Во первых, в функции to_s() не видно массива $abc, напиши первой строчкой функции это:
global $abc;

Потом, конкатенация в php выглядет не так += а так .=
Ну а дальше смотри что выйдет.
Свернутый текст
Надпись в туалете:
ничего хорошего из тебя не выйдет. smile.gif

Спустя 2 месяца, 4 дня, 6 часов, 57 минут, 22 секунды (8.04.2010 - 22:09) Lowfog написал(а):
получилось сделать! Спасибо. Теперь возникла другая проблема - когда в цикле прогоняю, верными оказываются только 90% паролей.

Цикл:
for($i1=0;$i1&lt;100;$i1++){
$base=strlen($abc); //длина строки
$password=""; //инициализация пароля
echo(' strlen'.$base);
$n=$year+($month+$mday)+12; //закодированное время
$n2=rand(0,200);
$n=$n+$n2;
$password.=to_s(to_n($n,$base)).to_s(to_n($n2,$base));
echo("$password ---- ");

}
Быстрый ответ:

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