>  기사  >  백엔드 개발  >  PHP에서 임의의 비밀번호를 생성하는 방법

PHP에서 임의의 비밀번호를 생성하는 방법

巴扎黑
巴扎黑원래의
2016-12-01 10:59:351134검색

PHP를 사용하여 애플리케이션, 특히 웹사이트 프로그램을 개발하려면 무작위 비밀번호를 생성해야 하는 경우가 많습니다. 예를 들어 사용자 등록을 위해 무작위 비밀번호가 생성되고 사용자 비밀번호 재설정에도 무작위 비밀번호가 필요합니다. 임의의 비밀번호는 고정된 길이의 문자열입니다. 여기에서는 참조용으로 임의의 문자열을 생성하는 여러 가지 방법을 수집했습니다.

방법 1:

1. 35와 같은 33~126의 임의의 정수를 생성합니다.

2. 35를 해당 ASCII 코드 문자(예: 35)로 변환합니다. #

3에 해당합니다. 위의 1단계와 2단계를 n번 반복하여 n자리 비밀번호

에 연결합니다. 이 알고리즘은 주로 mt_rand( int $min , int $ max ) 이 함수는 임의의 정수를 생성하는 데 사용됩니다. 여기서 $min – $max는 ASCII 코드의 범위입니다. 여기서는 필요에 따라 범위를 조정할 수 있습니다. 예를 들어 ASCII에서는 97 – 122비트입니다. 코드 테이블은 영어 문자 a – z에 해당합니다. 구체적으로, chr (int $ascii) 함수는 해당 정수 $ascii를 해당 문자로 변환하는 데 사용됩니다.

function create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++)
{
         $randpwd .= chr(mt_rand(33, 126)) = 6
echo create_password(6);

방법 2:


1. a – z, A – Z, 0 – 9 및 일부 특수 문자를 포함하는 $chars 문자열

2. $chars 문자열에서 문자를 무작위로 선택합니다

3. 두 번째 단계를 반복합니다. n번 단계를 거쳐 길이 n의 비밀번호를 얻으세요

function generate_password( $length = 8 ) {

// 비밀번호 문자 세트, 필요한 문자를 추가할 수 있습니다

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

$password = '';

for ( $ i = 0; $i                                                            ~       . $chars
// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

($chars) - 1) ];

}

return $password;
}





방법 3:

1. a – z, A – Z, 0 – 9 및 일부 특수 문자를 포함하는 문자 배열 $chars를 사전 설정합니다

2. array_rand()를 통해 $chars 배열에서 $length 요소


를 무작위로 선택합니다. 3. 얻은 키 이름 배열 $keys에 따라 $chars 배열에서 문자를 꺼내고 문자열을 연결합니다. 이 방법의 단점은 동일한 문자를 반복해서 검색할 수 없다는 것입니다.

function make_password( $length = 8 )

{

// 비밀번호 문자 세트, 필요한 문자를 추가할 수 있습니다.

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

// $에서 $length 항목을 무작위로 선택 chars 배열 요소 키 이름
$keys = ($chars, $length);

$password = '';
for($i = 0; $i < $length; $i++)
{
// $length 배열 요소를 문자열로 연결
        $ 비밀번호 .= $chars[$keys[$i]];
   }

     return $password;
}


시간 효율성 비교

다음 PHP 코드를 사용하여 위의 3가지 임의 비밀번호 생성 함수의 실행 시간을 계산하여 6자리 비밀번호를 생성한 후 시간 효율성에 대한 간단한 비교를 수행합니다.

function getmicrotime()
{
list($usec, $sec) = 폭발(" ",microtime());
return ((float )$usec + (float)$sec);
}

// 시작 시간 기록
$time_start = getmicrotime();

// 실행할 PHP를 넣습니다. 여기 코드는 다음과 같습니다:
// echo create_password(6);

// 기록 종료 시간
$time_end = getmicrotime();
$time = $time_end - $time_start;

// 총 실행 시간 출력
echo "execution time $time second";
?>


최종 결과는 다음과 같습니다.

방법 1: 9.8943710327148E-5초

방법 2: 9.6797943115234E-5초

방법 3: 0.00017499923706055초

방법 1의 실행 시간과 방법 2 거의 동일하지만 방법 3의 실행 시간이 조금 더 깁니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.