Skip to content
This page has been auto-translated and may contain errors.View in English

비밀번호 생성기

Zee 저기, 사령부에서 비밀번호 보안에 관한 메모를 돌렸는데 제가 콕 집어 지목됐어요. 창피해요. 작은 비밀번호 생성기 하나 만들어 줄 수 있어요? 길이를 입력하고, 숫자랑 기호를 포함할지 yes/no로 답하면, 실제로 쓸 수 있는 걸 뱉어내는 거요. 모든 계정에 "password123"을 쓰는 건 좋은 생각이 아닌 것 같아요...

만들 결과물

Password length: 12
Include numbers? (y/n): y
Include symbols? (y/n): y

Generated: k7#mP9xQ!2aL

필요한 것

  • 출력과 입력 — 사용자의 선호 사항 수집하기
  • 문자열 — 문자, 문자 리스트를 다시 하나의 문자열로 합치기
  • 리스트 — 허용된 문자들의 풀을 만들고 합치기
  • 모듈과 표준 라이브러리 — 문자를 고를 때 쓰는 random, 미리 만들어진 문자 집합을 제공하는 string

힌트

먼저 풀을 만드세요. 허용된 문자들의 빈 리스트로 시작합니다. 항상 알파벳을 추가한 다음, 사용자가 선택한 내용에 따라 조건적으로 숫자나 기호를 추가합니다.

string 모듈이 일을 줄여줍니다. 바로 쓸 수 있는 문자열들이 들어 있습니다: string.ascii_letters, string.digits, string.punctuation. 직접 타이핑할 필요가 없습니다.

고른 다음, 합치세요. random.choice()로 한 번에 한 글자씩 고르고, 사용자가 요청한 길이만큼 반복한 뒤, 결과를 하나의 문자열로 합치세요.

더 나아가기

기본 생성기가 동작하면:

  • 규칙을 보장하세요. 사용자가 숫자를 요청했다면, 결과에 숫자가 최소 하나는 들어가도록 하세요. 기호도 마찬가지입니다. 순전히 무작위로만 고르면 빠질 수도 있습니다.
  • 일괄 생성. 사용자가 한 번에 여러 개의 비밀번호를 요청할 수 있게 하고 모두 출력하세요.
  • 강도 표시기. 생성 후 간단한 등급을 출력하세요: 약함(알파벳만), 보통(알파벳 + 숫자), 강함(알파벳 + 숫자 + 기호).