The use of PHP to develop applications, especially web programs, often need to generate random passwords , such as user registration to generate random passwords, user reset password also need to generate a random password. Random password is a string of fixed length, here I collected several methods to generate random strings, for your reference.
Method One :
1. Generate a random integer, such as 35, in 33–126
2, convert 35 to the corresponding ASCII code characters, such as 35 corresponding #
3, repeat the above 1, 2 steps n times, connected to the N-bit password
The algorithm mainly uses two functions, the Mt_rand (int $min, int $max) function is used to generate random integers, where $min – $max for the range of ASCII code, which takes 33-126, can adjust the range according to the need, such as the ASCII code table 97– 122-bit corresponding a–z letter, the specific reference to the ASCII table; the Chr (int $ascii) function is used to convert the corresponding integer $ascii to the corresponding character.
Copy CodeThe code is as follows:
function Create_password ($PW _length = 8)
{
$randpwd = ';
for ($i = 0; $i < $PW _length; $i + +)
{
$randpwd. = Chr (Mt_rand (33, 126));
}
return $randpwd;
}
Call the function, passing the length parameter $pw_length = 6
Echo Create_password (6);
Method Two:
1, preset a string $chars, including A–z,a–z,0–9, as well as some special characters
2. Randomly take a character in a $chars string
3, repeat the second step n times, can get a length of n password
Copy CodeThe code is as follows:
function Generate_password ($length = 8) {
Password character set, you can add any character you need
$chars = ' abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&* ()-_ []{}<>~ ' +=,.;:/?]
$password = ';
for ($i = 0; $i < $length; $i + +)
{
Here are two ways to get a character
The first is to use SUBSTR to intercept any one character in the $chars;
The second is to take any element $chars the character array
$password. = substr ($chars, Mt_rand (0, strlen ($chars)-1), 1);
$password. = $chars [Mt_rand (0, strlen ($chars)-1)];
}
return $password;
}
Method Three :
1, preset a character array $chars, including a–z,a–z,0–9, as well as some special characters
2. Randomly select $length elements from the array $chars by Array_rand ()
3, according to the acquired key array group $keys, from the array $chars out character stitching string. The disadvantage of this method is that the same characters are not repeated.
Copy CodeThe code is as follows:
function Make_password ($length = 8)
{
Password character set, you can add any character you need
$chars = Array (' A ', ' B ', ' C ', ' d ', ' e ', ' f ', ' g ', ' H ',
' I ', ' j ', ' K ', ' l ', ' m ', ' n ', ' o ', ' P ', ' Q ', ' R ', ' s ',
' t ', ' u ', ' V ', ' w ', ' x ', ' y ', ' z ', ' A ', ' B ', ' C ', ' D ',
' E ', ' F ', ' G ', ' H ', ' I ', ' J ', ' K ', ' L ', ' M ', ' N ', ' O ',
' P ', ' Q ', ' R ', ' S ', ' T ', ' U ', ' V ', ' W ', ' X ', ' Y ', ' Z ',
' 0 ', ' 1 ', ' 2 ', ' 3 ', ' 4 ', ' 5 ', ' 6 ', ' 7 ', ' 8 ', ' 9 ', '! ',
' @ ', ' # ', ' $ ', '% ', ' ^ ', ' & ', ' * ', ' (', ') ', '-', ' _ ',
' [', '] ', ' {', '} ', ' < ', ' > ', ' ~ ', ' ', ' + ', ' = ', ', ', ', ', ', ', '
'.', ';', ':', '/', '?', '');
Randomly taking $length array element key name in a $chars
$keys = ($chars, $length);
$password = ';
for ($i = 0; $i < $length; $i + +)
{
To concatenate $length array elements into strings
$password. = $chars [$keys [$i]];
}
return $password;
}
Time Efficiency comparison
We use the following PHP code to calculate the running time of the 3 random password generation functions above to generate 6-bit passwords, and then make a simple comparison of their time efficiency.
Copy CodeThe code is as follows:
<?php
function Getmicrotime ()
{
List ($usec, $sec) = Explode ("", Microtime ());
Return ((float) $usec + (float) $sec);
}
Record start time
$time _start = Getmicrotime ();
Here are the PHP code to execute, such as:
Echo Create_password (6);
Record End time
$time _end = Getmicrotime ();
$time = $time _end-$time _start;
Total output Run time
echo "Execution time $time seconds";
?>
The final result is:
Method One: 9.8943710327148E-5 seconds
Method Two: 9.6797943115234E-5 seconds
Method Three: 0.00017499923706055 seconds
You can see that method one and method two have the same execution time, and method three runs a little longer.
Original: http://www.ludou.org/how-to-create-a-password-generator-using-php.html