간단한 함수, 클래스, 모듈을 이용한 비밀번호 유효여부를 파악하는 프로그램을 실습해보자!
비밀번호 유효성 검증 프로그램 설명
- 개요: 본인이 원하는 웹페이지에 회원가입을 할 시 아이디와 비밀번호를 만들어야 한다. 이 때, 비밀번호의 보안성을 향상시키기 위해 각 사이트마다 많은 제약을 걸어두는데 이번 실습을 통해 유사한 프로그램을 만들어 보려고 한다.
- 목표: 비밀번호 생성 프로그램을 만들어 보며 이때, 다음의 세가지 조건을 설정한다. (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'는 비밀번호로 사용가능합니다