Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen Sie mit Secret Lib einen sicheren Python-Passwortgenerator

Erstellen Sie mit Secret Lib einen sicheren Python-Passwortgenerator

Barbara Streisand
Barbara StreisandOriginal
2024-10-16 12:10:29187Durchsuche

Build a Secure Python Password Generator Using Secret Lib

Nachdem ich den Passwortgenerator erstellt hatte, erhielt ich einige erstaunliche Rezensionen, und zwei stachen für mich heraus: Guillaume Ste-Marie befürwortete die Verwendung von Seeds, um die Zufälligkeit zu erhöhen, und Christian Ledermann befürwortete ebenfalls diese Geheimnisse sollte „random“ ersetzen, da „random“ nicht wirklich „random“ ist.

Das Secrets-Modul generiert kryptografisch starke Zufallszahlen, die für die Verwaltung von Daten wie Passwörtern, Kontoauthentifizierung, Sicherheitstokens und zugehörigen Geheimnissen geeignet sind.

Der vollständige Code für den sicheren Passwortgenerator

Schauen wir uns zunächst den gesamten Code für unseren sicheren Passwortgenerator an. Machen Sie sich keine Sorgen, wenn es einschüchternd wirkt. Wir werden es im nächsten Abschnitt Zeile für Zeile aufschlüsseln.

    import secrets
    import string

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

    def main():
        print("Welcome to the Secure 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()

Lassen Sie uns dies nun aufschlüsseln und jeden Teil im Detail untersuchen.

Notwendige Module importieren

    import secrets
    import string

Diese beiden Zeilen importieren die Module, die wir für unseren sicheren Passwortgenerator benötigen:

  • Das Secrets-Modul bietet Funktionen zur Generierung kryptografisch starker Zufallszahlen, die sich zur Verwaltung von Geheimnissen wie Passwörtern eignen. Für kryptografische Zwecke ist es sicherer als das Zufallsmodul.

  • Das String-Modul bietet Konstanten, die verschiedene Arten von Zeichen (Buchstaben, Ziffern, Satzzeichen) enthalten. Dies erspart uns das manuelle Eintippen aller möglichen Zeichen, die wir in einem Passwort benötigen könnten.

    Die Funktion „generate_password“.

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

Diese Funktion generiert unser sicheres Passwort:

  • Wir erstellen eine Zeichenfolge, die alle möglichen Zeichen für unser Passwort enthält.

  • Wir verwenden Secrets.choice(), um zufällig Zeichen aus dieser Zeichenfolge auszuwählen. Dies ist sicherer als die Verwendung von random.choice(), da es den kryptografisch sicheren Zufallszahlengenerator des Betriebssystems verwendet.

  • Wir fügen diese Zeichen zu einer einzigen Zeichenfolge zusammen, um unser Passwort zu bilden.

    Die Hauptfunktion

    def main():
        print("Welcome to the Secure 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}")

Diese Funktion verwaltet die Benutzerinteraktion:

  • Es fordert den Benutzer zur Eingabe einer Passwortlänge auf.
  • Es behandelt potenzielle Fehler (wie nicht-numerische Eingaben oder negative Zahlen).
  • Es ruft „generate_password()“ mit der angegebenen Länge auf und gibt das Ergebnis aus. ## Ausführen des Skripts
    if __name__ == "__main__":
        main()

Dieser Block stellt sicher, dass die Funktion main() nur aufgerufen wird, wenn das Skript direkt ausgeführt wird, nicht wenn es als Modul importiert wird.

Verbesserung des Passwortgenerators

Hier sind einige Ideen, wie Sie Ihren Passwortgenerator weiter verbessern können:

  1. Benutzerdefinierte Zeichensätze: Ermöglichen Sie Benutzern, anzugeben, welche Zeichentypen sie in ihrem Passwort haben möchten.
  2. Passwortstärkeprüfung: Implementieren Sie eine Funktion, um die Stärke des generierten Passworts zu bewerten.
  3. Mehrere Passwörter: Geben Sie Benutzern die Möglichkeit, mehrere Passwörter gleichzeitig zu generieren.
  4. GUI-Schnittstelle: Erstellen Sie eine grafische Benutzeroberfläche mit einer Bibliothek wie Tkinter.
  5. Passwortspeicherung: Implementieren Sie eine sichere Methode zum Speichern generierter Passwörter, möglicherweise mit Verschlüsselung. ## Fazit

Durch die Verwendung des Secrets-Moduls anstelle des Zufallsmoduls haben wir einen sichereren Passwortgenerator erstellt.

Ressource

  • Erste Schritte mit Passwort-Crackern
  • 20 wesentliche Python-Erweiterungen für Visual Studio Code
  • Python für Web Scraping und Datenextraktion verwenden
  • Erste Schritte mit Python
  • Interaktive Karten mit Folium und Python erstellen

Das obige ist der detaillierte Inhalt vonErstellen Sie mit Secret Lib einen sicheren Python-Passwortgenerator. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn