Функция случайного пароля - PullRequest
1 голос
/ 07 января 2012

У меня есть требование предоставить пользователям возможность генерировать безопасный пароль ...

У меня в голове есть алгоритм, но я не знаю, как с ним работать ..

  1. У меня будет набор символов для пароля
  2. Я буду контролировать размер пароля, что означает выбор длины
  3. Выберите случайные индексы из массива, чтобы получить пароль моей выбранной длины ...

Последняя часть - это то, что я не могу реализовать ..

Любая помощь будет оценена ...

function randompassword() {  // Declaring the function
//Config Start
$salt = "abchefghjkmnpqrstuvwxyz0123456789"; // Your characters bank
$n = "8";                                   // Number of character to return
//end config

//Logic for password generation..

return $pass;
}

Ответы [ 6 ]

3 голосов
/ 07 января 2012
$v = strlen($salt); 
$pass='';
srand((double)microtime()*1000000);
  $i = 1;
  while ($i <= $n) {
        $num = rand() % $v;
        $tmp = substr($salt, $num, 1);
        $pass = $pass . $tmp;
        $i++;
  }

Вы можете попробовать этот код ..

2 голосов
/ 07 января 2012
<?php
    $salt = "abchefghjkmnpqrstuvwxyz0123456789";
    for ($i=0;$i<$n;$i++)
        $pass=$pass.$salt[rand(0,strlen($salt))];
    echo $pass;
?>

Вы также можете добавить substr(sha1($pass),0,$n); в конце

2 голосов
/ 07 января 2012

вы можете использовать что-то вроде этого, что позволит вам управлять надежностью вашего пароля и настраивать символы, которые вы хотите ввести в свой пароль.

function randomPassword($length=9, $strength=0) {
$vowels = 'aeuy';
$consonants = 'bdghjmnpqrstvz';
if ($strength & 1) {
    $consonants .= 'BDGHJLMNPQRSTVWXZ';
}
if ($strength & 2) {
    $vowels .= "AEUY";
}
if ($strength & 4) {
    $consonants .= '23456789';
}
if ($strength & 8) {
    $consonants .= '@#$%';
}

$password = '';
$alt = time() % 2;
for ($i = 0; $i < $length; $i++) {
    if ($alt == 1) {
        $password .= $consonants[(rand() % strlen($consonants))];
        $alt = 0;
    } else {
        $password .= $vowels[(rand() % strlen($vowels))];
        $alt = 1;
    }
}
return $password;

}

1 голос
/ 07 января 2012

Попробуйте это:

function unique_id2()
              {

             return substr(md5(uniqid(rand(), true)), 25);

            }
1 голос
/ 07 января 2012

Это действительно не так сложно:

$characters = 'abcd...';
$password   = '';
$length     = 8;

while (strlen($password) < $length) {
    $password .= $characters[mt_rand(0, strlen($characters) - 1)];
}
0 голосов
/ 07 января 2012
<?php
$password = "";
for($k=0;$k<$n;$k++){
 $rand = rand(0,strlen($salt));
 $password .=   $salt[$rand];
 }
echo $pass;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...