Passwörter mit Python erzeugen

Mit einem einfachen Python-Skript lässt sich schnell ein Passwort erzeugen. Dabei wird man häufig an die Verwendung von random() denken. Im folgenden Beispiel wird damit zufällig eine Farbe gewählt:

import random

colors = ["red", "green", "blue", "yellow", "violet", "orange"]
color = random.choice(colors)
print(f"A randomly selected color: {color}")

Allerdings wurde random() nicht für den kryptografischen Einsatz entwickelt. Es werden also keine kryptografisch starken Werte ermittelt.

Hier kommt jetzt das Modul secret ins Spiel, das eine kryptografisch starke Zufälligkeit gewährleisten soll. Ein einfache Programm zur Erzeugung eines Passworts mit Hilfe von secrets.choice() könnte so aussehen:

# !/usr/bin/env python3

import secrets
import string


def generate_password(length: int):
    chars: str = string.ascii_letters + string.digits + string.punctuation
    password: str = "".join(secrets.choice(chars) for _ in range(length))

    print(f"Generated password: {password}")


if __name__ == "__main__":
    generate_password(14)

Die Passwortlänge ist in diesem Beispiel im Code vorgegeben (14). Diese ließe sich beispielsweise unter Verwendung von argparse(), einem Parser für Kommandozeilen-Optionen, ändern. Beim Aufruf des Programms könnte damit zusätzlich die Passwortlänge als Option übergeben werden. In der Python-Dokumentation finden sich dazu weitere Informationen und Beispiele.