영문자, 숫자, 특수문자를 포함한 비밀번호를 생성하기 위해 string 모듈을 사용한다
string.ascii_uppercase
에는 대문자 A부터 Z까지 포함되어있다
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
소문자는 string.ascii_lowercase
로 입력한다
string.ascii_letters
는 소문자, 대문자 모두를 포함하며, 입력시 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
로 출력된다
숫자를 출력하려면 digits를 사용한다
>>> string.digits
'0123456789'
영문자와 숫자를 같이 출력할 수 있도록 alphanumeric 변수를 만들면 아래와 같다
import string
alphanumeric = string.ascii_letters + string.digits
print(alphanumeric)
비밀번호로 사용하고 싶은 글자를 chars
라는 이름의 리스트로 저장한다
예)
chars = list(set(alphanumeric) - set('lIO0')) + ['_']
print(len(chars))
>>59
글자를 무작위로 고르기 위해 random 모듈을 사용한다
아무 글자를 하나 뽑기 위해서는 아래 코드를 입력한다
print(random.choice(chars)) #예) 'S'
비밀번호 생성 코드는 간단한다
password = str()
for i in range(16):
password += random.choice(chars)
print(password)
16자 비밀번호를 만들기 위해서 range(16)을 지정하고 random을 사용해 무작위로 비밀번호를 생성했다. 하지만 이는 무작위로 59자에서 아무 문자나 뽑는 거기 때문에 영문자, 숫자, 특수문자 각 한 가지 이상 넣어서 비밀번호를 만들어야 한다면 다른 방법으로 시도해야 한다