Seite 1 von 1

Zufälliges Passwort in Python3

Verfasst: Sonntag 4. Oktober 2020, 17:33
von anonym13
Hallo Freunde der Programmierung,

ich bin ganz neu in der Programmierung und habe nun Python 3 für mich entdeckt.
Dazu nutze ich die Online-IDE von Repl.it, die mir sehr gut gefällt. (Link: https://repl.it/languages/Python3)
Letzte Nacht kam mir die Idee, dass ich gerne einmal ein Programm schreiben wollen würde,
was mir ein zufälliges Passwort ausgibt, jedoch weiß ich nicht so recht, wie ich mit dem Programm anfangen soll, sowas aber auch!

Anfangen würde ich vermutlich damit, verschiedene Listen jeweils einmal mit Zahlen 0-9, Buchstaben A-Z und Sonderzeichen zu füllen.
Aber viel weiter reicht meine Vorstellungskraft aktuell nicht.
Ich denke, es wäre erstmal sinnvoll per IF-Abfrage die Anzahl der Zeichen abzufragen, und dann eine Ausgabe zu tätigen.

Wer gute Ideen und Lust hat einen Neuling zu unterstützen, so würde ich mich riesig freuen. :)

Mit freundlichen Grüßen
Der Mueller

Re: Zufälliges Passwort in Python3

Verfasst: Sonntag 4. Oktober 2020, 18:08
von mp1337
Hi, hier die Funktion aus meinem Programm:

Code: Alles auswählen

import random

ASCII_LETTERS = 'AaBbCcDdEeFfGgHJKkLMmNnPpQqRrSsTtVvWwXxYyZz'
DIGITS = '123456789'
SPECIAL_CHAR = '!"§$%&/()=?#+-_.:,;<>~*[]{}'

def generate_password(password_length=10, letters=False, digits=False, special=False):
    """Generating strong random passwords using
       ASCII_LETTERS, DIGITS and SPECIAL_CHAR.
       int for password length. default  len of
       10 characters.
    """
    characters = ""
    if letters:
        characters += ASCII_LETTERS
    if digits:
        characters += DIGITS
    if special:
        characters += SPECIAL_CHAR

    if not characters:
        characters = ASCII_LETTERS + DIGITS + SPECIAL_CHAR
    return "".join(random.choices(characters, k=password_length))


Re: Zufälliges Passwort in Python3

Verfasst: Sonntag 4. Oktober 2020, 18:24
von noisefloor
Hallo,

@mp1337: die Logik deiner Funktion ist komisch. Wenn letters und digits und special alle `False` sind, sollte man eigentlich erwarten, dass keine Passwort zurück geliefert wird und nicht alles benutzt wird.

Gruß, noisefloor

Re: Zufälliges Passwort in Python3

Verfasst: Sonntag 4. Oktober 2020, 19:25
von mp1337
Eigentlich nicht. Wenn man nichts übergibt wird per Default ein sicheres Kennwort generiert.

Re: Zufälliges Passwort in Python3

Verfasst: Sonntag 4. Oktober 2020, 19:31
von noisefloor
Hallo,

aber sicher

Code: Alles auswählen

def generate_password(password_length=10, letters=False, digits=False, special=False)
Wenn die benannten Argumente alle `False` sind, tut die Funktion so, als wären alle `True`. Das ist... sagen wir mal sehr unerwartet. Die drehst die Logik dann einfach um. Wenn alles `True` wäre, dann würde die Funktion ohne Argumente aufgerufen das machen, was sie jetzt macht.

Gruß, noisefloor

Re: Zufälliges Passwort in Python3

Verfasst: Sonntag 4. Oktober 2020, 21:34
von sparrow
@mp1337: Und Oder anders ausgedrückt: Wenn ich explezit weder Buchstaben, Zahlen noch Sonderzeichen haben will: Warum bekomme ich dann ein Passwort?

Ich würde übrigens noch ändern, dass das Vorkommen von bestimmten Elementen im Passwort nicht nur möglich sondern auch sichergestellt ist. Im Moment könnte auch ein Passwort generiert werden, dass nur aus Buchstaben besteht, obwohl auch Zahlen gewollt sind.

Re: Zufälliges Passwort in Python3

Verfasst: Montag 5. Oktober 2020, 18:12
von rennmaus
Hi,
Ich habe auch mal ein bisschen rumprobiert und dabei ist das hier rausgekommen (Vielleicht ein bisschen zu simpel aber wenn er nicht gut ist, ist ja auch nicht schlimm ;) )

Code: Alles auswählen

import random

Letters='QqWwEeRrTtZzUuIiOoPpÜüAaSsDdFfGgHhJjKkLlÖöÄäYyXxCcVvBbNnMm'
Zahlen='123456789'
Sonder='ß?!§$%&#*<>°'


Länge=input("Wie sicher soll das Passwort sein? Stufe 1,2 oder 3?")
if Länge=='3':
    for i in range(6):
        B=random.choice(Letters)
        Z=random.choice(Zahlen)
        S=random.choice(Sonder)
        print(B,Z,S)

if Länge == '2':
    for i in range(4):
        B=random.choice(Letters)
        Z=random.choice(Zahlen)
        S=random.choice(Sonder)
        print(B,Z,S)

if Länge == '1':
    for i in range(2):
        B=random.choice(Letters)
        Z=random.choice(Zahlen)
        S=random.choice(Sonder)
        print(B,Z,S)
Bin übrigens auch Neuling ;)...

Mfg
Christian

Re: Zufälliges Passwort in Python3

Verfasst: Montag 5. Oktober 2020, 18:48
von snafu
Die Anzahl der Schleifendurchläufe könntest du auch mathematisch ausdrücken: range(int(stufe) * 2). Dann brauchst du nur eine Schleife. Und anstatt mehrere print()-Ausgaben hintereinander zu machen, würde man die Zeichen in einer Liste sammeln und dann via join() ausliefern.

Re: Zufälliges Passwort in Python3

Verfasst: Montag 5. Oktober 2020, 19:13
von Sirius3
Konstanten schreibt man komplett gross, Variablen komplett klein. Programmierer sind faul, daher mögen sie es nicht, wenn sie Code kopieren, sondern drücken das lieber durch eine einfache Formel aus:

Code: Alles auswählen

import random

LETTERS = 'QqWwEeRrTtZzUuIiOoPpÜüAaSsDdFfGgHhJjKkLlÖöÄäYyXxCcVvBbNnMm'
DIGITS = '123456789'
OTHERS ='ß?!§$%&#*<>°'

level = int(input("Wie sicher soll das Passwort sein? Stufe 1,2 oder 3?"))
length = level * 2
for _ in range(length):
    letter = random.choice(LETTERS)
    digit = random.choice(DIGITS)
    other = random.choice(OTHERS)
    print(letter, digit, other)
Warum gibt es keine Passwörter mit 0?

Re: Zufälliges Passwort in Python3

Verfasst: Montag 5. Oktober 2020, 19:22
von rennmaus
Oh, stimmt xD

Re: Zufälliges Passwort in Python3

Verfasst: Dienstag 6. Oktober 2020, 23:51
von LeSchakal
Du könntest natürlich auch aus jeder gewünschten Gruppe ein zufälliges Element wählen, danach die restlichen Elemente mit random.choices finden und wenn du dann noch die beiden Listen zusammenmischt (mit Hilfe von random.shuffle), kann auch niemand mehr eine Ordnung erkennen.

Dann brauchst du gar keine Schleife.