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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Генератор паролей

Сообщения:  [1-10]   [11-11] 

 
 автор: Саня   (20.12.2005 в 14:00)   письмо автору
 
   для: ZC   (20.12.2005 в 13:51)
 

Да, из журнала.
Правда я этот скрипт немного подредактировал.

   
 
 автор: 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(33126);
              
$spec = array(34394692);
              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(33126); 
              
$result .= chr($rnd); 
       }
       
$spec = array("\'"'\"'"\\""\.");
       
$replace = array("g""6""G""f");
       
$result  str_replace($spec$replace$result); 
       return (
$result); 
}
?>

   
 
 автор: cheops   (17.10.2005 в 01:10)   письмо автору
 
   для: Саня_   (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(33126);
              
$result .= chr($rnd);
       }
       return (
$result);
?>

   
 
 автор: JIEXA   (16.10.2005 в 09:29)   письмо автору
 
   для: 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/== 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)

   
 
 автор: Atom   (15.10.2005 в 23:30)   письмо автору
 
   для: fabik   (15.10.2005 в 23:22)
 

И где в вашем коде спец-символы?

   
 
 автор: 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)."";
?>

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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