When developing applications using PHP, especially website programs, it is often necessary to generate a random password. For example, a random password is generated for user registration, and a random password is also required for user reset password. A random password is a string of fixed length. Here I have collected several methods of generating random strings for your reference.
Method 1:
1. Generate a random integer from 33 – 126, such as 35,
2. Convert 35 into the corresponding ASCII character, such as 35 corresponding to #
3. Repeat steps 1 and 2 above n times, concatenate into n-digit password
This algorithm mainly uses two functions. The mt_rand (int $min, int $max) function is used to generate random integers, where $min – $max is the range of ASCII codes, here Take 33 -126, and you can adjust the range as needed. For example, 97 - 122 bits in the ASCII code table correspond to the English letters a - z. For details, please refer to the ASCII code table; the chr (int $ascii) function is used to convert the corresponding integer $ascii into corresponding characters.
function create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++)
{
$randpwd .= chr(mt_rand(33, 126));
}
Return $randpwd;
}
// Call this function and pass the length parameter $pw_length = 6
echo create_password(6);
Method 2:
1. Preset a character The string $chars includes a – z, A – Z, 0 – 9, and some special characters
2. Randomly pick a character in the $chars string
3. Repeat the second step n times, and the obtained length is n's password
function generate_password( $length = 8 ) {
// Password character set, you can add any characters you need
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{} <>~`+=,.;:/?|';
$password = '';
for ( $i = 0; $i < $length; $i++ )
{
// Provided here Two ways to get characters
use using substr use using ’ ’ s ’ ‐ ‑ ‑ ‑‑ ‑‑ // The second way to get characters,
, mt_rand(0, strlen($chars) - 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
}
{
// Password character set, you can add any characters 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', '!',
'@','#' , '$ ', '%', '^', '&', '*', '(', ')', '-', '_',
'[', ']', '{', '}' , '<', '>', '~', '`', '+', '=', ',',
'.', ';', ':', '/', '? ', '|');
$keys = ($chars, $length);
$password = '';
for($i = 0; $i < $length; $i++)
{
" // Concatenate $length array elements into a string
" $password .= $chars[$keys [$i]];
}
return $password;
}
Time efficiency comparison
We use the following PHP code to calculate the running time of the above 3 random password generation functions to generate a 6-digit password, and then compare them A simple comparison of time efficiency.
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
// Recording start time
$time_start = getmicrotime();
// Put the PHP code to be executed here, such as:
// echo create_password(6);
// Recording end time
$time_end = getmicrotime();
$time = $time_end - $time_start;
// Output the total running time
echo "Execution time $time seconds";
?>
The final result is:
Method 1 : 9.8943710327148E-5 seconds
Method two: 9.6797943115234E-5 seconds
Method three: 0.00017499923706055 seconds
It can be seen that the execution time of method one and method two is similar, while the running time of method three is slightly longer.