본문 바로가기

강의/Python 기초

Chapter 9. 비밀번호 생성기 만들기

반응형

1. 비밀번호 생성기란?

비밀번호 생성기는 컴퓨터가 자동으로 비밀번호를 만들어 주는 프로그램입니다.

예를 들어 우리가 직접 비밀번호를 만들면

1234
abcd
password

처럼 너무 쉬운 비밀번호를 만들 수 있습니다.

이런 비밀번호는 다른 사람이 쉽게 맞힐 수 있습니다.

그래서 파이썬을 사용해서 숫자, 영어, 특수문자를 섞은 비밀번호를 자동으로 만들어 보겠습니다.


2. 이번 시간에 배울 내용

이번 Chapter 9에서는 다음 내용을 배웁니다.

랜덤 비밀번호 생성
문자 모음 만들기
random 모듈 사용하기
반복문 사용하기

3. 비밀번호 생성기 동작 순서

비밀번호 생성기는 다음 순서로 동작합니다.

1. 사용할 문자들을 준비합니다.
2. 비밀번호 길이를 입력받습니다.
3. 랜덤으로 문자를 하나씩 고릅니다.
4. 고른 문자를 이어 붙입니다.
5. 완성된 비밀번호를 출력합니다.

4. 파이썬 전체 코드

import random
import string

# 사용할 문자 준비
letters = string.ascii_letters      # 영어 대문자 + 소문자
numbers = string.digits             # 숫자 0~9
symbols = string.punctuation        # 특수문자

# 모든 문자 합치기
all_characters = letters + numbers + symbols

# 사용자에게 비밀번호 길이 입력받기
length = int(input("비밀번호 길이를 입력하세요: "))

password = ""

# 입력한 길이만큼 랜덤 문자 선택
for i in range(length):
    password += random.choice(all_characters)

# 결과 출력
print("생성된 비밀번호:", password)

5. 실행 예시

비밀번호 길이를 입력하세요: 10
생성된 비밀번호: a9!Kp#2Lm@

실행할 때마다 다른 비밀번호가 만들어집니다.

왜냐하면 random.choice()가 문자 중에서 아무거나 랜덤으로 골라 주기 때문입니다.


6. 코드 쉽게 설명하기

1) random 모듈 불러오기

import random

random은 아무거나 랜덤으로 고를 때 사용하는 도구입니다.

예를 들어 제비뽑기처럼 여러 문자 중 하나를 뽑을 수 있습니다.


2) string 모듈 불러오기

import string

string은 영어, 숫자, 특수문자를 쉽게 사용할 수 있게 도와주는 도구입니다.


3) 영어 문자 준비하기

letters = string.ascii_letters

이 코드는 영어 대문자와 소문자를 준비합니다.

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

4) 숫자 준비하기

numbers = string.digits

이 코드는 숫자를 준비합니다.

0123456789

5) 특수문자 준비하기

symbols = string.punctuation

이 코드는 특수문자를 준비합니다.

! " # $ % & ...

6) 모든 문자 합치기

all_characters = letters + numbers + symbols

영어, 숫자, 특수문자를 모두 합칩니다.

이제 비밀번호를 만들 때 이 문자들 중에서 랜덤으로 고르게 됩니다.


7) 비밀번호 길이 입력받기

length = int(input("비밀번호 길이를 입력하세요: "))

사용자가 만들고 싶은 비밀번호 길이를 입력합니다.

예를 들어 8을 입력하면 8글자 비밀번호가 만들어집니다.


8) 비밀번호 저장 공간 만들기

password = ""

처음에는 비밀번호가 비어 있습니다.

랜덤으로 뽑은 문자를 하나씩 넣어 줄 공간입니다.


9) 반복문으로 문자 뽑기

for i in range(length):
    password += random.choice(all_characters)

입력한 길이만큼 반복하면서 문자를 하나씩 랜덤으로 뽑습니다.

예를 들어 길이를 5로 입력하면 문자를 5번 뽑습니다.


10) 완성된 비밀번호 출력하기

print("생성된 비밀번호:", password)

완성된 비밀번호를 화면에 보여 줍니다.


7. 조금 더 안전한 비밀번호 만들기

비밀번호는 너무 짧으면 위험할 수 있습니다.

보통은 다음처럼 만드는 것이 좋습니다.

8글자 이상
영어 포함
숫자 포함
특수문자 포함

예시입니다.

A8!kP2@z
Python#2026
MyPass!39

8. 업그레이드 버전 코드

이번에는 비밀번호 길이가 너무 짧으면 다시 입력하게 만들어 보겠습니다.

import random
import string

letters = string.ascii_letters
numbers = string.digits
symbols = string.punctuation

all_characters = letters + numbers + symbols

while True:
    length = int(input("비밀번호 길이를 입력하세요(8자 이상): "))

    if length < 8:
        print("비밀번호는 8자 이상으로 만들어 주세요.")
    else:
        break

password = ""

for i in range(length):
    password += random.choice(all_characters)

print("생성된 비밀번호:", password)

9. 업그레이드 실행 예시

비밀번호 길이를 입력하세요(8자 이상): 5
비밀번호는 8자 이상으로 만들어 주세요.

비밀번호 길이를 입력하세요(8자 이상): 10
생성된 비밀번호: Q2!kLm8#zP

10. 오늘 배운 내용 정리

오늘은 파이썬으로 랜덤 비밀번호 생성기를 만들어 보았습니다.

정리하면 다음과 같습니다.

random 모듈은 랜덤으로 고를 때 사용합니다.
string 모듈은 문자 모음을 쉽게 만들 때 사용합니다.
random.choice()는 여러 문자 중 하나를 랜덤으로 고릅니다.
반복문을 사용하면 원하는 길이만큼 비밀번호를 만들 수 있습니다.

비밀번호 생성기는 간단하지만 실생활에서도 사용할 수 있는 재미있는 프로그램입니다.


11. 마무리

이번 시간에는 파이썬으로 랜덤 비밀번호 생성기를 만들어 보았습니다.

처음에는 어려워 보일 수 있지만 원리는 간단합니다.

문자를 준비한다.
랜덤으로 고른다.
이어 붙인다.
출력한다.

이 과정을 이해하면 비밀번호 생성기뿐만 아니라 랜덤 이름 뽑기, 랜덤 번호 뽑기, 추첨 프로그램도 만들 수 있습니다.


비밀번호 생성기 동작 구조도

반응형