Python TIL(16) - 비밀번호 유효성 검증

random·2021년 4월 9일
0

Python - TIL

목록 보기
14/19

간단한 함수, 클래스, 모듈을 이용한 비밀번호 유효여부를 파악하는 프로그램을 실습해보자!

비밀번호 유효성 검증 프로그램 설명

  • 개요: 본인이 원하는 웹페이지에 회원가입을 할 시 아이디와 비밀번호를 만들어야 한다. 이 때, 비밀번호의 보안성을 향상시키기 위해 각 사이트마다 많은 제약을 걸어두는데 이번 실습을 통해 유사한 프로그램을 만들어 보려고 한다.
  • 목표: 비밀번호 생성 프로그램을 만들어 보며 이때, 다음의 세가지 조건을 설정한다. (1) 패스워드의 적합한 길이 제한(8~14자), (2) 비밀번호는 영문 알파벳과 숫자로만 이루어질 것 (3) 영어 알파벳 사용시 대문자와 소문자를 혼용할 것.
  • 전략: 참, 거짓의 기능을 활용하여 위 조건 설정에 위반되는 입력을 False와 위반되는 이유를 문자열로 작성하여 출력하고, 그게 아닌 올바른 입력은 True와 입력 성공 메세지를 문자열로 출력한다.

<user_password.py 파일>


def password_validcheck(pwd):
    '''
    checking password validation
    Args: password
    return: 
        True or False
    '''

    if len(pwd) < 8 or len(pwd) > 14:
        print("패스워드의 길이기 적당하지 않습니다. 8자이상, 14자 미만의 패스워드를 다시 입력해주세요.")
        return False

    for char_num in pwd:
        if char_num.isalnum() == False:
            print("비밀번호가 알파벳과 숫자로만 구성되어 있지 않습니다. 올바른 패스워드를 다시 입력해주세요.")
            return False

    upper = False
    lower = False

    for char_num in pwd:
        if upper and lower:
            break

        if char_num.isalpha():
            if not upper:
                upper = char_num.isupper()

            if not lower:
                lower = char_num.islower()

    if not upper or not lower:
        print("'{}'는 영문 대문자 소문자가 혼용되어 있지 않습니다.".format(pwd))
        return False

    print("'{}'는 비밀번호로 사용가능합니다".format(pwd))
    return True
    
  • 위 내용 전개사항:
    • 향후 모듈로 사용할 user_password.py 파일을 만듦.
    • password_validcheck() 함수를 만들고 향후 적힐 비밀번호를 의미하는 뜻에서 pwd를 파라미터로 넣어준다. 그리고 Doc_String 내용을 써서 해당 함수의 기능을 간략히 설명함.
    • 비밀번호 첫번째 조건; 글자수 설정. (len 기능 사용)
    • 비밀번호 두번째 조건; 알파벳, 숫자 설정. (isalnum 기능 사용)
    • 비밀번호 세번째 조건; 영문 대문자, 소문자 설정. (isupper/islower기능 사용)
    • str 포맷을 사용한 입력 비밀번호의 이용가능 메세지 제공

<user_management.py 파일>


import user_password as up


class User:
    def __init__(self, pwd):
        self.pwd = pwd
        self.check_validation()

    
    def check_validation(self):
        up.password_validcheck(self.pwd)


if __name__ == '__main__':

    user_info = User(input("원하는 패스워드를 입력해주세요: "))
  • 위 내용 전개사항:
    • user_password.py 파일을 모듈로 사용할 사용자 입력 파일.
    • 같은 디렉토리 내에 위치한 user_password 파일을 간략히 'up'로 import함.
    • user 클래스를 만들고 "_init_" 생성자에서 check-validation(self) 함수 생성.
    • check_validation 함수에서 'up' 파일 내 password_validcheck 함수 호출.
    • 사용자가 입력한 비밀번호를 해당 프로그램에서 사용 가능하도록 User(input())에서 입력된 값으로 프로그램이 돌아가게 설정.

<출력결과>

  • 아래는 다양한 경우의 수로 입력값을 넣어본 출력결과임.
  • 의도한 대로 다양한 경우의 수 비밀번호 생성조건이 성공적으로 필터링됨.
 맥 터미널 실행: Password_Project % python3 user_management.py

1. 원하는 패스워드를 입력해주세요: dfsfefd!@#
   비밀번호가 알파벳과 숫자로만 구성되어 있지 않습니다. 올바른 패스워드를 다시 입력해주세요.
2. 원하는 패스워드를 입력해주세요: dsdfssdf   
   영문 대문자 소문자가 혼용되어 있지 않습니다.
3. 원하는 패스워드를 입력해주세요: sasd1
   패스워드의 길이기 적당하지 않습니다. 8자이상, 14자 미만의 패스워드를 다시 입력해주세요.
4. 원하는 패스워드를 입력해주세요: fdfdfsd!@ASD
   비밀번호가 알파벳과 숫자로만 구성되어 있지 않습니다. 올바른 패스워드를 다시 입력입력해주세요.
5. 원하는 패스워드를 입력해주세요: ASDSFWsdsd123
   'ASDSFWsdsd123'는 비밀번호로 사용가능합니다

0개의 댓글