Home >Backend Development >PHP Tutorial >How to generate random passwords in php

How to generate random passwords in php

巴扎黑
巴扎黑Original
2016-12-01 10:59:351167browse

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) ];
}

return $password;

}



Method 3:

1. Preset a character array $chars, including a – z, A – Z, 0 – 9, and some special characters

2. From the array through array_rand() Randomly select $length elements from $chars

3. According to the obtained key name array $keys, take out the characters from the array $chars and concatenate the string. The disadvantage of this method is that the same characters will not be retrieved repeatedly.

function make_password( $length = 8 )

{
// 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', '!',
'@','#' , '$ ', '%', '^', '&', '*', '(', ')', '-', '_',
'[', ']', '{', '}' , '<', '>', '~', '`', '+', '=', ',',
'.', ';', ':', '/', '? ', '|');

// Randomly select $length array element key names in $chars

$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.


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn