드림핵 정리

무작위 비밀번호 생성 코드

ilsancityboy 2023. 11. 4. 15:17

비밀번호 길이를 입력받고 

해당 비밀번호에 들어갈 숫자 갯수와 특수문자 갯수를 입력받은 후 

무작위로 비밀번호를 만들어주는 코드를 만들었다.

또한 만들어진 비밀번호를 자동적으로 파일에 저장해주는 코드이다.

 

완성시 보여지는 그림은

------------------------------------------------------------------
어디에 쓰일 비밀번호 인가요? => 네이버
비밀번호의 길이를 입력해주세요 => 12
숫자는 몇개를 포함할까요? => 2
특수문자는 몇개를 포함할까요? =>2

D'uraZK'2Tw6
password.txt 이름의 파일에 네이버  비밀번호가 저장되었습니다.

------------------------------------------------------------------

어디에 쓰일 비밀번호 인가요? => 싸이월드
비밀번호의 길이를 입력해주세요 => 12
숫자는 몇개를 포함할까요? => 2
특수문자는 몇개를 포함할까요? =>2

2TMSgf7/}EcP
password.txt 이름의 파일에 네이버  비밀번호가 저장되었습니다.

------------------------------------------------------------------


------------password.txt---------------

----네이버----
D'uraZK'2Tw6
----싸이월드----
2TMSgf7/}EcP

 

 

 

내가 만든 코드 내용은 이렇다.

#비밀번호 생성 프로그램.
import random
import string

letters = string.ascii_letters #문자 (대소문자)
numbers = string.digits #숫자
symbols = string.punctuation #특수문자 

#<-- 입력받고 확인하는 부분 -->
while True:
  where = input("어디에 사용할 비밀번호인가요?")
  password_length = int(input("비밀번호 길이를 입력하세요: "))
  num_count = int(input("숫자는 몇개를 포함할까요?"))
  num_sym = int(input("특수문자는 몇개를 포함할까요?"))
  if password_length > num_count + num_sym:
    break
  else:
    print("비밀번호  길이가 숫자와 특수문자를 더한값보다 작습니다. 재입력 해주세요")

    

#<-- 비밀번호 무작위 생성-->
password = ''
for _ in range(num_count):
  password += random.choice(numbers)

for _ in range(num_sym):
  password += random.choice(symbols)

if num_count + num_sym < password_length:
  for _ in range(password_length - num_count - num_sym) :
    password += random.choice(letters)
else:  
  print("입력 양식이 맞지않습니다. 재실행 요망")


#<--완성된 비밀번호 무작위로 섞기-->
password_list = list(password)
random.shuffle(password_list)
password = ''.join(password_list)


print(password)

#<--만들어진 비밀번호 저장-->
with open("password.txt", "a") as file:
  file.write("-----"+ where + "------"+ "\n"+ password + "\n")
  print("password.txt 이름의 파일에 "+ where + " 비밀번호가 저장되었습니다.")