파이썬, 아이디와 비밀번호('*' 출력) 입력, 암호화, 비교, 로그인 처리
글. 수알치 오상문
파이썬 터미널 화면에서 아이디와 비밀번호를 입력 받아서 로그인 처리를 하는 예제입니다.
1. 비밀번호는 sha256 해시 암호화하여 처리합니다.
2. 이용자가 존재하지 않거나 비밀번호가 다르면 로그인에 실패합니다.
3. 입력받은 비밀번호도 sha256 해시 암호화를 하여 비교합니다.
4. 비밀번호 입력 시 '*' 문자로 보여줍니다.
리눅스와 윈도우 운영체제에 따라 처리가 다르니 소스 코드 참고하세요.
[주의] 비밀번호 입력 시 문자 키가 아닌 키를 입력하면 오류가 발생할 수 있습니다.
import hashlib
# import getpass # Linux 비밀번호 입력 (Windows에서는 echo 기능 지원 안함)
import msvcrt # Windows 비밀번호 입력
# 이용자 계정 정보
users = {"a":"1111","b":"2222","c":"3333","d":"4444","e":"5555"}
# 이용자의 비밀번호를 단방향 해시 값으로 변경
for id, pw in users.items():
users[id] = hashlib.sha256(pw.encode("utf-8")).hexdigest()
def get_password(prompt='Password: '):
password = ""
print(prompt, end='')
while True:
ch = msvcrt.getch().decode("utf-8")
if ch == "\r" or ch == "\n":
break
password += ch
print("*", end="", flush=True)
print()
return password
# 아이디, 비밀번호 입력받기
ID = input("Your ID: ")
# 비밀번호 입력시 내용 숨기기
# password = getpass.getpass() (prompt="Password: ", stream=None, echo="#") # Linux
password = get_password() # Windows
# 비밀번호는 sha256 암호화
password = hashlib.sha256(password.encode("utf-8")).hexdigest()
# print(password)
# 아이디가 존재하는지 확인
if ID in users.keys() and password == users[ID]:
print("Login success!")
else:
print("Login failed!")
[실행 화면]
Your ID: a
Password: ****
Login success!
반응형
'Python 활용' 카테고리의 다른 글
파이썬, 한글 인코딩 형식 검사 (0) | 2023.04.12 |
---|---|
Python에서 Java 호출하는 방법 (0) | 2023.04.07 |
다음(DAUM) 이메일 서버를 이용하여 이메일 보내기 (0) | 2023.03.30 |
*.SPDX 파일 읽는 파이썬 예제 (0) | 2023.03.13 |
파이썬, FPDF로 PDF 파일 저장하는 예제 (0) | 2023.03.12 |