본문 바로가기

IT . Web

PHP 랜덤 비밀번호/패스워드 생성

$strength 번호로 비밀번호의 복잡형태를 선택할 수 있고, $length로 원하는 비밀번호 길이를 지정할 수 있어요.
꼭 비밀번호 아니더라도 임시 인증키 형태로 유용하게 쓸 수 있을 것 같습니다.

function generateRandomPassword($length=8, $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;
}