> 백엔드 개발 > 파이썬 튜토리얼 > Python 비밀번호 생성기 구축: 초보자 가이드

Python 비밀번호 생성기 구축: 초보자 가이드

Linda Hamilton
풀어 주다: 2024-10-09 16:19:02
원래의
1039명이 탐색했습니다.

비밀번호 생성기를 호스팅하고 귀하에게만 서비스를 제공하는 것은 놀라운 도구이자 시작하는 프로젝트입니다. 이 가이드에서는 간단한 비밀번호 생성기를 구축하고 Pythonanywhere를 사용하여 호스팅하는 방법을 살펴보겠습니다.

목차

  1. 비밀번호 보안 소개
  2. Python 환경 설정
  3. 비밀번호 생성기 구축
    • 필요한 모듈 가져오기
    • 비밀번호 생성 기능 만들기
    • 주요 기능 개발
    • 스크립트 실행
  4. 코드 이해
  5. 비밀번호 생성기 개선
  6. PythonAnywhere에서 프로젝트 호스팅
  7. 결론 ## 비밀번호 보안 소개

데이터 유출이 점점 흔한 시대에 각 온라인 계정에 대해 강력하고 고유한 비밀번호를 갖는 것이 그 어느 때보다 중요합니다. 강력한 비밀번호에는 일반적으로 대문자와 소문자, 숫자, 특수 문자가 혼합되어 있습니다. 또한 무차별 대입 공격을 견딜 수 있을 만큼 길어야 합니다. 그러나 그러한 비밀번호를 만들고 기억하는 것은 어려울 수 있습니다. 비밀번호 생성기가 유용한 곳입니다.

Python 환경 설정

코딩을 시작하기 전에 컴퓨터에 Python이 설치되어 있는지 확인하세요. 공식 Python 웹사이트에서 다운로드할 수 있습니다. 이 프로젝트에서는 Python 3.12.7

을 사용합니다.

Python 버전을 확인하려면 명령 프롬프트나 터미널을 열고 다음을 입력하세요.

python --version
로그인 후 복사

Build a Python Password Generator: A Beginner

3으로 시작하는 버전 번호(예: Python 3.8.5)가 보이면 시작할 준비가 된 것입니다.

완전한 비밀번호 생성기 코드

먼저 비밀번호 생성기의 전체 코드를 살펴보겠습니다. 위협적으로 보이더라도 걱정하지 마세요. 다음 섹션에서 한 줄씩 분석하겠습니다.

import random
import string

def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

def main():
    print("Welcome to the Simple Password Generator!")

    try:
        length = int(input("Enter the desired password length: "))
        if length <= 0:
            raise ValueError("Password length must be positive")
    except ValueError as e:
        print(f"Invalid input: {e}")
        print("Using default length of 12 characters.")
        length = 12

    password = generate_password(length)
    print(f"\nYour generated password is: {password}")

if __name__ == "__main__":
    main()


로그인 후 복사

이제 이를 분해하여 각 부분을 자세히 살펴보겠습니다. 그 전에 제가 작성한 Python으로 고급 비밀번호 크래커 구축(전체 가이드)이라는 놀라운 기사를 살펴보겠습니다.

Build a Python Password Generator: A Beginner

필요한 모듈 가져오기

import random
import string
로그인 후 복사

이 두 줄은 비밀번호 생성기에 필요한 모듈을 가져옵니다.

  • [random](https://www.w3schools.com/python/module_random.asp) 모듈은 난수를 생성하고 무작위로 선택하는 기능을 제공합니다. 비밀번호 문자를 무작위로 선택하는 데 사용됩니다.

  • [string](https://docs.python.org/3/library/string.html) 모듈은 다양한 유형의 문자(문자, 숫자, 구두점)가 포함된 상수를 제공합니다. 이렇게 하면 비밀번호에 사용할 수 있는 모든 문자를 수동으로 입력할 필요가 없습니다.

    generate_password 함수

def generate_password(length=12):
로그인 후 복사

이 줄은 generate_password라는 함수를 정의합니다. Python의 def 키워드는 함수를 정의하는 데 사용됩니다. 이 함수는 길이라는 하나의 매개변수를 사용하며 기본값은 12입니다. 즉, 함수 호출 시 길이를 지정하지 않으면 12자의 비밀번호가 생성됩니다.

characters = string.ascii_letters + string.digits + string.punctuation
로그인 후 복사

이 줄은 비밀번호에 사용할 수 있는 모든 문자를 포함하는 문자라는 문자열을 생성합니다. 분해해 보겠습니다.

  • string.ascii_letters에는 소문자(a-z)와 대문자(A-Z)의 모든 ASCII 문자가 포함되어 있습니다.
  • string.digits에는 모든 십진수(0-9)가 포함되어 있습니다.
  • 문자열.문장에는 모든 구두점 문자가 포함되어 있습니다.

이를 연산자와 함께 추가하면 모든 문자를 포함하는 단일 문자열이 생성됩니다.

    password = ''.join(random.choice(characters) for _ in range(length))
로그인 후 복사

이 줄은 실제 비밀번호 생성이 이루어지는 곳입니다. 좀 복잡하니 좀 더 자세히 살펴보겠습니다.

  • random.choice(characters)는 문자열에서 하나의 문자를 무작위로 선택합니다.
  • for _ in range(length)는 length 횟수만큼 실행되는 루프를 생성합니다. 밑줄 _은 루프 변수를 사용할 필요가 없으므로 일회용 변수 이름으로 사용됩니다.
  • 이 루프는 무작위로 선택된 문자의 반복자를 생성하는 생성기 표현식의 일부입니다.
  • ''.join(...)은 이 반복자를 사용하여 모든 문자를 단일 문자열로 결합하고 각 문자 사이에 빈 문자열 ''을 넣습니다.

결과는 비밀번호 변수에 저장됩니다.

    return password
로그인 후 복사

이 줄은 함수에서 생성된 비밀번호를 반환합니다.

주요 기능

def main():
로그인 후 복사

이 줄은 사용자 상호 작용을 처리하고 generate_password 함수를 호출하는 기본 함수를 정의합니다.

    print("Welcome to the Simple Password Generator!")
로그인 후 복사

이 줄은 사용자를 위한 환영 메시지를 인쇄합니다.

        try:
            length = int(input("Enter the desired password length: "))
            if length <= 0:
                raise ValueError("Password length must be positive")
로그인 후 복사

These lines are part of a try block, which allows us to handle potential errors:

  • We prompt the user to enter a desired password length and attempt to convert their input to an integer using int().
  • If the user enters a value less than or equal to 0, we manually raise a ValueError with a custom message.
        except ValueError as e:
            print(f"Invalid input: {e}")
            print("Using default length of 12 characters.")
            length = 12
로그인 후 복사

This except block catches any ValueError that might occur, either from int() if the user enters a non-numeric value, or from our manually raised error if they enter a non-positive number.

  • We print an error message, including the specific error (e).
  • We inform the user that we'll use the default length of 12 characters.
  • We set length to 12.
        password = generate_password(length)
        print(f"\nYour generated password is: {password}")
로그인 후 복사

These lines call our generate_password function with the specified (or default) length, and then print the resulting password.

Running the Script

    if __name__ == "__main__":
        main()
로그인 후 복사
로그인 후 복사

This block is a common Python idiom. It checks if the script is being run directly (as opposed to being imported as a module). If it is, it calls the main() function.

Lets explore __**name__** = "__main__"

Understanding if __name__ == "__main__" in Python

The line if __name__ == "__main__": might look strange if you're new to Python, but it's a very useful and common pattern. Let's break it down step by step:

Cheeks?

This line checks whether the Python script is being run directly by the user or if it's being imported as a module into another script. Based on this, it decides whether to run certain parts of the code or not.

What are __name__ and "__main__"?

  1. __name__ is a special variable in Python. Python sets this variable automatically for each script that runs.
  2. When you run a Python file directly (like when you type python your_script.py in the command line), Python sets __name__ to the string "__main__" for that script.
  3. However, if your script is imported as a module into another script, __name__ is set to the name of the script/module. ## An analogy to understand this better

Imagine you have a Swiss Army knife. This knife has many tools, like a blade, scissors, and a screwdriver.

  • When you use the knife directly, you use it as the "main" tool. This is like running your Python script directly.
  • But sometimes, you might just want to use one specific tool from the knife as part of a bigger task. This is like importing your script as a module into another script.

The if __name__ == "__main__": check is like the knife asking, "Am I being used as the main tool right now, or am I just lending one of my tools to another task?"

Why is this useful?

This check allows you to write code that can be both run on its own and imported by other scripts without running unintended code. Here's a practical example.

    def greet(name):
        return f"Hello, {name}!"

    def main():
        name = input("Enter your name: ")
        print(greet(name))

    if __name__ == "__main__":
        main()
로그인 후 복사

In this script:

  • If you run it directly, it will ask for your name and greet you.
  • If you import it into another script, you can use the greet function without the script automatically asking for input. ## How it works in our password generator

In our password generator script.

    if __name__ == "__main__":
        main()
로그인 후 복사
로그인 후 복사

This means:

  • If you run the password generator script directly, it will call the main() function and start generating passwords.
  • If you import the script into another Python file, it won't automatically start the password generation process. This allows you to use the generate_password() function in other scripts without running the interactive part. Build a Python Password Generator: A Beginner

Our password generator works, and in the next part of this article, we will modify the password generator to do a lot more, which includes.

Custom Character Sets: Allow users to specify which types of characters they want in their password (e.g., only letters and numbers, no special characters).

Password Strength Checker: Implement a function to evaluate the strength of the generated password and provide feedback to the user.

Multiple Passwords: Give users the option to generate multiple passwords at once.

GUI Interface: Create a graphical user interface using a library like Tkinter to make the program more user-friendly.

Password Storage: Implement a secure way to store generated passwords, possibly with encryption.

의지

  • 비밀번호 크래커 시작하기
  • Visual Studio Code용 20가지 필수 Python 확장
  • 웹 스크래핑 및 데이터 추출에 Python 사용
  • Python 시작하기
  • Folium과 Python으로 대화형 지도 만들기

위 내용은 Python 비밀번호 생성기 구축: 초보자 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿