본문 바로가기
공부/파이썬 Python

Password Generator (자동 비밀번호 생성기) with Python

by 혼밥맨 2022. 1. 29.
반응형

Random Password Generator (자동 비밀번호 생성기) with Python

필요 라이브러리

random

1
import random
cs

 

서론 

자동 비밀번호 생성기가 많이 필요하지 않을 수 있다. 근데 비밀번호 만들기 귀찮을 때 한 번 돌려서 자동 생성되는 것으로 사용할 수도 있으니 그냥 재미삼아 만들어봤다.

 

 

본론

 

1) 비밀번호 구성

비밀번호는 크게 4가지 텍스트 종류 (text type)으로 구성된다. 대문자, 소문자, 숫자, 특수문자. 4가지를 모두 포함시킬 것인지 몇 가지 타입만 포함할 것인지 유저가 선택할 수 있어야 한다.

1
2
3
4
uppercase_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lowercase_letters = uppercase_letters.lower()
digits = "0123456789"
symbols = "()[]{},;:.-_/\\?+*#"
cs

 

2) 비밀번호 길이 & 비밀번호 개수 설정

1
2
length = 8
amount = 10
cs

length (길이)는 비밀번호의 길이, amount (개수)는 생성할 비밀번호의 개수를 의미한다. 

 

 

3) 비밀번호 생성

1
2
3
for x in range(amount):
  password = "".join(random.sample(all, length))
  print(password)
cs

 

 

4) 결과

아래는 대문자, 소문자, 숫자, 특수문자 버튼을 모두 켜고, 비밀번호의 길이를 8로 설정하고, 비밀번호 개수를 10개로 설정했을 때의 결과이다.

1
2
3
4
5
6
7
8
9
10
\bkG]p}5
]O\0edaU
b*4}Vi:6
cPp}-*6{
x{Ct(W8H
0cmsvdQ-
#xT\dL;2
PyYqZ09i
4_7W)XPw
*wK-?Zy#
cs

 

물론 특정 웹사이트는 SQL Injection을 예방하고자 허용하지 않는 특수문자가 있다. 그럴 때는 아래 문자에서 사용하고 싶지 않은 문자를 수동으로 제거하면 된다.

1
2
3
4
uppercase_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lowercase_letters = uppercase_letters.lower()
digits = "0123456789"
symbols = "()[]{},;:.-_/\\?+*#"
cs

 

 

Full Code

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import random
 
uppercase_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
lowercase_letters = uppercase_letters.lower()
digits = "0123456789"
symbols = "()[]{},;:.-_/\\?+*#" 
# symbols = "()[]{};:?+*#" 
 
 
# 비밀번호 구성 선택
upper, lower, nums, syms = TrueTrueTrueTrue
 
# Example 01: 대문자를 원하지 않는다면
# upper, lower, nums, syms = False, True, True, True
 
 
all = ""
 
if upper:
  all += uppercase_letters
if lower:
  all += lowercase_letters
if nums:
  all += digits
if syms:
  all +=symbols
 
length = 8             # 비밀번호의 길이
amount = 10            # 비밀번호의 개수
 
for x in range(amount):
  password = "".join(random.sample(all, length))
  print(password)
 
cs

 

 

반응형

댓글