태그 보관물: 코드

암호 문자열의 보안레벨 평가 함수

회원가입 같은 것을 할때 입력하는 암호가 보안에 안전한지 여부를 반환하는 함수를 만들었습니다.


 1 ) { // 연속성 없이 변환
            $change_point += 0.1;
        } else if ( $gap < 0 ) { // 역순서로 변환
            $change_point += 0.05;
        }
        $old_char = $char;
    }

    // 문자길이 점수(6 ~ 16자 기준): 0 ~ 2
    $length_point = floor(strlen($password) / 6);

    // 고유문자 점수(16자 기준): 1 ~ 16
    $unique_point = count($unique_char);

    // 전체 점수(6 ~ 16자 기준): 0 or 0.3 ~ 345.6
    $total_point = $char_point * $change_point * $length_point * $unique_point;

    // 점수정보 참조 배열
    $point_data = array(
        'char' => $char_point,
        'change' => $change_point,
        'length' => $length_point,
        'unique' => $unique_point,
        'total' => $total_point,
    );

    ## 보안 레벨 반환 ##
    // 전체 점수를 위한 4종류 점수를 각각 '(최대값 - 최소값) / 레벨'의 값으로,
    // 4종류 점수를 각각 레벨별로 계산하여 레벨별 점수범위를 구했음
    if ( $total_point > 0 && $total_point <= 16.96 ) {
        return 1;
    } else if ( $total_point > 16.96 && $total_point <= 137.36 ) {
        return 2;
    } else if ( $total_point > 137.36 ) {
        return 3;
    } else {
        return 0;
    }
}
?>