경기도미래기술학교 AI개발자 부트캠프 24일차 - 파이썬으로 랜덤 비밀번호 생성하기.
2023. 6. 12. 18:19ㆍpython
반응형
import random
import string
def generate_password():
# 대문자, 소문자, 숫자, 특수 문자를 포함한 모든 문자
all_characters = string.ascii_letters + string.digits + string.punctuation
# 대문자, 소문자, 숫자, 특수 문자 각각 한 번 이상 포함하기 위한 초기 비밀번호를 나열.
random_password = [random.choice(string.ascii_uppercase),
random.choice(string.ascii_lowercase),
random.choice(string.digits),
random.choice(string.punctuation)]
# 비밀번호 길이 랜덤 설정 (10 ~ 12)
pw_length = random.randint(10, 12)
# random_password(4자) 이후의 비밀번호 문자 생성
for _ in range(pw_length - 4):
character = random.choice(all_characters)
random_password.append(character)
random.shuffle(random_password)
# 비밀번호 문자 리스트를 문자열로 변환 후 반환
return ''.join(random_password)
# 비밀번호 생성
random_password = generate_password()
print("생성된 비밀번호:", random_password)
먼저 string 모듈의 string.ascii_letters 는 대소문자 포함한 영어 문자,
string.digits는 모든 숫자, string.punctuation은 모든 특수문자이다. punctuation이 특수문자라는 뜻인가보다.
그리고 ascii_letters 중에서 대문자는 ascii_uppercase, 소문자는 ascii_lowercase를 해줘야 한다.
그렇게 해서 기본적으로 대소문자 하나씩, 숫자, 특수문자 하나는 무조건 포함시키는 문자를 random을 통해 만든다.
비밀번호 길이는 10~12자로 하기 때문에 randint를 사용해서 범위 설정을 해줬다. randint는 뒤에 오는 인수의 값도 포함을 시키기 때문에 10~12까지의 숫자가 랜덤으로 표시될 것이다.
그 다음 for _ in range. 언더 바 사용은 처음 해본다. 반복문을 쓸 때 굳이 i가 필요하지 않다면 개발자 작성 형식 상 언더 바를 쓴다고 한다.
아무튼 그 character를 pw_length-4만큼 반복해서 붙여준다.
그다음 셔플을 하는데, 주의해야할 것이 shuffle은 반환 값이 None이다. List를 String화 하려면 str() 이거로 하면 안되고 ''.join()이나 다른 방법을 쓰면 된다고 한다.
https://codechacha.com/ko/python-convert-list-to-string/
이렇게 하면 비밀번호 랜덤 생성이 가능하다.
728x90
'python' 카테고리의 다른 글
경기도미래기술학교 AI개발자 부트캠프 27일차 TIL- 벡터 공부 (0) | 2023.06.15 |
---|---|
코딩테스트. 백준허브 연결하기. (0) | 2023.06.13 |
경기도미래기술학교 AI개발자 부트캠프 20일차 TIL- Numpy를 배운날. Numpy란? ndarray ,reshape (0) | 2023.06.05 |
셀레니움으로 티스토리 블로그 포스팅 편하게 하기. 로그인 - 글쓰기 - 임시저장까지. (0) | 2023.06.04 |
경기도미래기술학교 AI개발자 부트캠프 17일차 TIL- WordCloud란 무엇인가? 하는법. (0) | 2023.05.31 |