현재 위치: > 최신 기사 목록> STR_SPLIT를 사용하여 비밀번호 강도 감지를 실현하십시오

STR_SPLIT를 사용하여 비밀번호 강도 감지를 실현하십시오

M66 2025-05-28

php의 str_split 함수는 문자열을 배열로 나누고 각 배열 요소에는 문자열의 문자가 포함됩니다. 기본 구문은 다음과 같습니다.

 str_split(string $string, int $length = 1): array
  • $ string : 분할 될 문자열입니다.

  • $ 길이 : 각 배열 요소의 길이, 기본값은 1입니다.

예를 들어, str_split ( "abcdef")을 호출하면 [ 'a', 'b', 'c', 'd', 'e', ​​'f']를 반환합니다.

2. 비밀번호 강도 감지 규칙

비밀번호의 강도를 결정하기 위해 일반적으로 다음과 같은 측면을 고려합니다.

  • 길이 : 비밀번호의 길이는 충분히 길어야합니다. 일반적으로 8 자 이상이 필요합니다.

  • 숫자 포함 : 비밀번호에는 숫자가 포함되어야합니다.

  • 대문자 포함 : 비밀번호에는 하나 이상의 대문자가 포함되어야합니다.

  • 소문자 포함 : 비밀번호에는 하나 이상의 소문자 문자가 포함되어야합니다.

  • 특수 문자 포함 : 암호에는 @ , # , $ 등과 같은 적어도 하나의 특수 문자가 포함되어야합니다.

3. 비밀번호 감지에 str_split 함수를 사용하십시오

str_split을 사용하여 암호를 배열로 분할하고 배열의 각 문자를 확인하여 비밀번호가 위의 강도 요구 사항을 충족하는지 확인할 수 있습니다. 간단한 예제 코드는 다음과 같습니다.

 <?php

function check_password_strength($password) {
    // 비밀번호 길이를 확인하십시오
    if (strlen($password) < 8) {
        return "비밀번호 길이는 적어도입니다 8 캐릭터";
    }

    // 사용 str_split 암호를 배열로 분할하십시오
    $password_array = str_split($password);

    // 플래그 초기화
    $has_upper = false;
    $has_lower = false;
    $has_digit = false;
    $has_special = false;

    // 배열을 통해 반복하십시오,检查每캐릭터
    foreach ($password_array as $char) {
        if (ctype_upper($char)) {
            $has_upper = true;
        } elseif (ctype_lower($char)) {
            $has_lower = true;
        } elseif (is_numeric($char)) {
            $has_digit = true;
        } elseif (preg_match('/[!@#$%^&*(),.?":{}|<>]/', $char)) {
            $has_special = true;
        }
    }

    // 모든 조건이 충족되는지 확인하십시오
    if (!$has_upper) {
        return "비밀번호에는 하나 이상의 대문자가 포함되어야합니다";
    }
    if (!$has_lower) {
        return "비밀번호에는 하나 이상의 소문자 문자가 포함되어야합니다";
    }
    if (!$has_digit) {
        return "비밀번호에는 하나 이상의 숫자가 포함되어야합니다";
    }
    if (!$has_special) {
        return "비밀번호에는 하나 이상의 특수 문자가 포함되어야합니다";
    }

    return "비밀번호 강도";
}

// 샘플 테스트
$password = "P@ssw0rd";
echo check_password_strength($password); // 산출:비밀번호 강도

?>

4. 코드 파싱

  • str_split ($ password) : 암호 문자열을 배열로 분할하여 문자 검사를 용이하게합니다.

  • ctype_upper ($ char) : 캐릭터가 대문자인지 확인하십시오.

  • CTYPE_LOWER ($ char) : 문자가 소문자인지 확인하십시오.

  • IS_NUMERIC ($ char) : 문자가 숫자인지 확인하십시오.

  • preg_match ( '/[!@##$%^&*() ,.

5. 비밀번호 보안을 더욱 향상시킵니다

위에서 언급 한 탐지 규칙은 암호의 보안을 효과적으로 향상시킬 수 있지만, 우리는 여전히 암호 감지의 엄격함을 더욱 향상시킬 수 있습니다. 고려하다:

  • 제한된 비밀번호에는 사용자에 대한 일반적인 정보 (예 : 사용자 이름, 이메일, 생일 등)가 포함될 수 없습니다.

  • SHA-256 또는 BCrypt와 같은 해싱 알고리즘을 사용하여 암호를 암호화하여 비밀번호가 유출 되더라도 직접 금이 갈 수 없는지 확인합니다.