我需要给我的用户一个生成安全密码的函数。。。
我脑子里有算法,但不知道如何处理它。
- 我将在密码中提供一组字符
- 我将控制密码的大小,这意味着选择长度
- 从数组中选择随机索引以获得我指定长度的passsword
最后一部分是我无法实现的。。
任何帮助都将不胜感激。。。
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;
}
$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++;
}
你可以试试这个代码。。
您可以使用类似的东西来管理密码的强度,并自定义要在密码中输入的字符。
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;
}
<?php
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
for ($i=0;$i<$n;$i++)
$pass=$pass.$salt[rand(0,strlen($salt))];
echo $pass;
?>
您也可以在的末尾添加一个substr(sha1($pass),0,$n);
它真的没有那么复杂:
$characters = 'abcd...';
$password = '';
$length = 8;
while (strlen($password) < $length) {
$password .= $characters[mt_rand(0, strlen($characters) - 1)];
}
试试这个:
function unique_id2()
{
return substr(md5(uniqid(rand(), true)), 25);
}
<?php
$password = "";
for($k=0;$k<$n;$k++){
$rand = rand(0,strlen($salt));
$password .= $salt[$rand];
}
echo $pass;
?>