랜덤으로 비밀번호 생성하기 (string, random)

·2022년 11월 15일
0

TIL

목록 보기
35/46

string 모듈

영문자, 숫자, 특수문자를 포함한 비밀번호를 생성하기 위해 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)

글자를 무작위로 고르기 위해 random 모듈을 사용한다
아무 글자를 하나 뽑기 위해서는 아래 코드를 입력한다

print(random.choice(chars)) #예) 'S'

비밀번호 생성

비밀번호 생성 코드는 간단한다

password = str()
for i in range(16):
    password += random.choice(chars)

print(password)

16자 비밀번호를 만들기 위해서 range(16)을 지정하고 random을 사용해 무작위로 비밀번호를 생성했다. 하지만 이는 무작위로 59자에서 아무 문자나 뽑는 거기 때문에 영문자, 숫자, 특수문자 각 한 가지 이상 넣어서 비밀번호를 만들어야 한다면 다른 방법으로 시도해야 한다

0개의 댓글