Rumah >pembangunan bahagian belakang >Tutorial Python >Bina Penjana Kata Laluan Python: Panduan Pemula

Bina Penjana Kata Laluan Python: Panduan Pemula

Linda Hamilton
Linda Hamiltonasal
2024-10-09 16:19:021027semak imbas

비밀번호 생성기를 호스팅하고 귀하에게만 서비스를 제공하는 것은 놀라운 도구이자 시작하는 프로젝트입니다. 이 가이드에서는 간단한 비밀번호 생성기를 구축하고 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 コードに必須の 20 の Python 拡張機能
  • Web スクレイピングとデータ抽出に Python を使用する
  • Python 入門
  • Folium と Python を使用したインタラクティブなマップの作成

Atas ialah kandungan terperinci Bina Penjana Kata Laluan Python: Panduan Pemula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn