Пишу скрипт генератора пароля, как его можно усовершенствовать?

1 234 5
SG
На сайте с 22.03.2013
Offline
7
#21
Chukcha:
А зачем генерировать пароли, которые клеятся на монитор?

Не знаю, при таких раскладах можно юзать qwerty12345. Клеить на монитор пароли, жесть...

C
На сайте с 04.02.2005
Offline
291
#22
setka_gs:
Не знаю, при таких раскладах можно юзать qwerty12345. Клеить на монитор пароли, жесть...

Показанный мною алгоритм - это просто алгоритм для "запоминающего" пароля.

Есть много рекомендаций, не знаю как насчет реализаций, по поводу генерации паролей.

Придумывается куча "политик" с проверкой частоты повторяемости, сложности, длины.

Много чего есть. Все зависит от необходимости применеия генераторов.

anton000
На сайте с 10.05.2013
Offline
32
#23
setka_gs:
если выберет все, то создадите e в которой
case 'e':$letters = 'abcdefghijklmopkqrstuvwxyz0123456789~!@#$%^&*()_+=-';break;
детский сад.
---------- Добавлено 03.07.2013 в 21:53 ----------

рандом стоит на строку, если не создать
case 'e':$letters = 'abcdefghijklmopkqrstuvwxyz0123456789~!@#$%^&*()_+=-';break;
то пользователь не получит чего хочет...

Если честно, это вы детский сад. В вашем случае, нужно будет создавать 20 массивов. Так как будет 4 галочки для выбора. Вот и считайте, 4 * 4 = 16 и ещё какие-либо функции. Вы написали тоже самое, то и с чего я начал эту тему. С массива, и я попросил как можно обойтись без каждого выбора. То есть есть 4 массива, и она в зависимости от галочки, собираются вместе.

Вы уловили суть вопроса?

M2
На сайте с 11.01.2011
Offline
341
#24
anton000:
В вашем случае, нужно будет создавать 20 массивов.

А разве это не логично? Из курса комбинаторики это прямо следует :) вы же хотите все возможные комбинации? Ну и прописывайте их в программе, в чём вопрос-то? Если хотите урезать количество массивов - урезайте кол-во комбинаций :)

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
anton000
На сайте с 10.05.2013
Offline
32
#25
mark2011:
А разве это не логично? Из курса комбинаторики это прямо следует :) вы же хотите все возможные комбинации? Ну и прописывайте их в программе, в чём вопрос-то? Если хотите урезать количество массивов - урезайте кол-во комбинаций :)

Я конечно, не знаток с точки оптимизации. Но если я правильно понимаю, чем больше скрипта, тем дольше его обработка? Если в одном файле, будет 20 массивов и 20 функций, я не думаю что это будет Good !

Я думал, что можно их как-то соединять (массивы), конечно есть функция соединения, но я не могу понять как соединить их несколько? При этом не зная, сколько их будет соединяться?

PS - если бы я знал что пользователь выберет именно 2 пункта, то да, это легко сделать (соединить) нужные массивы.

IL
На сайте с 20.04.2007
Offline
435
#26
mark2011:
вы же хотите все возможные комбинации?
anton000:
нужно будет создавать 20 массивов.

Одного двумерного вполне достаточно


$symbols = array(
'c'=>'abcdefghijklmopkqrstuvwxyz',
'e'=>'~!@#$%^&*()_+=-',
'd'=>'0123456789',
);
$letters = '';
foreach(str_split($t) as $type) {
if (isset ($symbols[$type]))
$letters.= $symbols[$type];
}
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
M2
На сайте с 11.01.2011
Offline
341
#27

anton000,

anton000:
Но если я правильно понимаю, чем больше скрипта, тем дольше его обработка?

Ага, если скрипт будет состоять из 10 млн строк, то обработка его будет занимать больше времени, чем того же скрипта из 1000 строк.

Что за бред? Что за функции у вас? Причём здесь их кол-во? Я могу одну функцию зафигачить, которая убьёт любой впс. И это будет всего лишь одна функция. Поймите вы наконец, что вы очень мелко мыслите, нет такого по кол-ву кода... приведите примеры ваших функций, замерьте время их выполнения, оптимизируйте.... почитайте про профилирование, если уж вам так важно время выполнения данного скрипта.

---------- Добавлено 04.07.2013 в 10:06 ----------

ivan-lev:
foreach(str_split($t) as $type) { if (isset ($symbols[$type])) $letters.= $symbols[$type]; }

А где будет проверяться вот это:


if (isset ($symbols[$type]
?
IL
На сайте с 20.04.2007
Offline
435
#28
mark2011:
А где будет проверяться вот это:

Там же, где и сейчас.. В цикле..

В $t - строка вида 'd', 'cd', 'cde' // при необходимости - добавить своих "вариантов"

SG
На сайте с 22.03.2013
Offline
7
#29
anton000:
Вы уловили суть вопроса?

Я уловил что вы не отличаете функцию от строки, а строку от массива. И при такой каше в голове как вы можете четко сформулировать то что вам нужно? Это вопрос риторический можете не отвечать;)

anton000:
4 * 4 = 16 и ещё какие-либо функции.

Все блин... посчитал.

цифры

буквы

спец

цифры и буквы.

цифры и спец.

буквы и спец.

все.

всего 7 вариантов при 4 возможных выборах. 16 и не пахнет...

Но в данном случае это все чушь

ivan-lev:
Одного двумерного вполне достаточно

$symbols = array(
'c'=>'abcdefghijklmopkqrstuvwxyz',
'e'=>'~!@#$%^&*()_+=-',
'd'=>'0123456789',
);
$letters = '';
foreach(str_split($t) as $type) {
if (isset ($symbols[$type]))
$letters.= $symbols[$type];
}

вот такая функция в данном случае в корне не верна.. там $letters нужно состовлять из данных которые с формы пришли, тогда будет 3 строчки кода на ВСЕ возможные варианты, будь их хоть 500.

D
На сайте с 14.01.2007
Offline
153
#30

пример с буквами и цифрами:

у вас должны быть input'ы с name=letters и name=numbers


function pass($length, $post){
$all_signs=array("letters"=>range("a","z"),"numbers"=>range(0,9));
$possible_signs=array();
foreach(array_keys($post) as $p){
if (isset($all_signs[$p])){
$possible_signs=array_merge($possible_signs,$all_signs[$p]);
}
}
shuffle($possible_signs);
return join("",array_slice($possible_signs,0,$length));
}

$pass=pass(5,$_POST);
1 234 5

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий