|
|
|
|
|
для: ZC
(20.12.2005 в 13:51)
| | Да, из журнала.
Правда я этот скрипт немного подредактировал. | |
|
|
|
|
|
|
|
для: Саня_
(16.10.2005 в 21:22)
| | А откуда вы этот скрипт взяли, не из журнала ли? | |
|
|
|
|
автор: DmSh (24.10.2005 в 14:14) |
|
|
для: Саня_
(17.10.2005 в 16:25)
| |
<?
echo crypt(mktime(), rand());
?>
|
| |
|
|
|
|
автор: Саня_ (17.10.2005 в 16:25) |
|
|
для: cheops
(17.10.2005 в 01:10)
| | Вот ещё проще:
<?php
function passgen ($length) {
$result = "";
srand(microtime()*23456);
for($i = 1; $i <= $length; $i++) {
$rnd = rand(33, 126);
$spec = array(34, 39, 46, 92);
if(in_array($rnd, $spec)) $i--; else $result .= chr($rnd);
}
return ($result);
}
?>
|
Где $speс - массив ASCII-значений забаненных символов.
Можно добавить ord("запрещённый символ") в качестве элемента массива. | |
|
|
|
|
автор: Саня_ (17.10.2005 в 16:08) |
|
|
для: cheops
(17.10.2005 в 01:10)
| | Ничего сложного с вопиющими символами нету:
<?php
function passgen ($length) {
$result = "";
srand(microtime()*23456);
for($i = 1; $i <= $length; $i++) {
$rnd = rand(33, 126);
$result .= chr($rnd);
}
$spec = array("\'", '\"', "\\", "\.");
$replace = array("g", "6", "G", "f");
$result = str_replace($spec, $replace, $result);
return ($result);
}
?>
|
| |
|
|
|
|
|
|
|
для: Саня_
(16.10.2005 в 21:22)
| | ага, я вот тоже что-то такое хотел сначала сделать, только меня смутило то, что спец-символы сложно удалять, особенно если пароль будет применяться в качестве пароля к учётной записи - неплохо бы было наиболее вопиющие удалить. Хм... но наверное его нужно выложить туда же как вариант. | |
|
|
|
|
автор: Саня_ (16.10.2005 в 21:22) |
|
|
для: cheops
(15.10.2005 в 03:29)
| | Когда-то давно я предлагал неплохой скрипт на этом форуме. Напишу его ещё раз:
<?php
function passgen ($length) {
$result = "";
srand(microtime()*23456);
for($i = 1; $i <= $length; $i++) {
$rnd = rand(33, 126);
$result .= chr($rnd);
}
return ($result);
?>
|
| |
|
|
|
|
|
|
|
для: Atom
(15.10.2005 в 23:30)
| | Вот приведу две функуции
Генератор паролей
<?
function GenPass($tolen,$numlen=3) {
if ($tolen<5||$numlen>=$tolen) return false;
if ($numlen>9) $numlen=9;
$len=$tolen-$numlen;
$vv="aeiouy"; // гласные
$cs="bcdfghjklmnpqrstvwxz"; // согласные
$res='';
for($i=0;$i<floor($len / 2);$i++){
$res.=$cs[rand(0,strlen($cs)-1)].$vv[rand(0,strlen($vv)-1)];
}
if (floor($len/2)<$len/2) $res.=$cs[rand(0,strlen($cs)-1)];
$num=substr(rand(100000000,999999999),0,$numlen);
$res.=$num;
return $res;
}
?>
|
Проверка, хороший пароль или нет
<?php
/*
* bool CheckPass(string password)
* TRUE - Пароль прошёл проверку
* FALSE - Не прошёл
*/
function CheckPass($p) {
$p=trim($p);
$len=strlen($p);
$chars='1234567890qwertyuiopasdfghjklzxcvbn mQWERTYUIOPASDFGHJKLZXCVBNM';
if($len < 6) return FALSE;
if(strpos($chars, $p) !== false) return FALSE;
if($len/2 == round($len/2)) {
$p1=substr($p,0,$len/2);
$p2=substr($p,$len/2);
$p22='';
for($i=strlen($p2)-1; $i>=0; $i--)
$p22.=$p2[$i];
if($p1 == $p2 and strpos($chars, $p1) and strpos($chars, $p2)) return FALSE;
if($p1 == $p22 and strpos($chars, $p1) and strpos($chars, $p2)) return FALSE;
}
$chars=array();
for($i=0; $i<$len; $i++) {
if(isSet($chars[$p[$i]]))
$chars[$p[$i]]++;
else
$chars[$p[$i]]=1;
}
// Считаем процент уникальности символов
$k=sizeof($chars) / $len * 100;
if($k < 46) return FALSE;
return TRUE;
}
?>
Пароли которые функция считает плохими:
1. Длинна < 6 символов
2. Последовательность символов как на клавиатуре (123456, qwerty)
3. Повторные комбинации последовательности символов (werwer, 12341234)
4. "Отражённые" последовательности символов (123321, qweewq)
5. Процент уникальности символов меньше 46 (wwwfff, 000000)
|
| |
|
|
|
|
|
|
|
для: fabik
(15.10.2005 в 23:22)
| | И где в вашем коде спец-символы? | |
|
|
|
|
|
|
|
для: cheops
(15.10.2005 в 03:29)
| | А почему бы не :) в принцепе дописать до спец симвалов можно легко...
<?php
function passwg($size) {
$hash = md5 (uniqid(time()));
$res_hash = substr($hash,0,$size);
return $res_hash;
}
?>
вызов:
<?php
echo "".passwg(12)."";
?> | |
|
|
|
|