Seite 1 von 1

Passwortgenerator (mit GUI)

Verfasst: Sonntag 1. Mai 2011, 16:11
von pixewakb
Ich habe mir ein kleines Programm geschrieben, was mir bei Bedarf eine Liste mit zufälligen Passwörtern ausgibt. Das Passwort wird aus Klein- und Großbuchstaben sowie Ziffern gebildet. Ich verwende bereits Python 3.1; möglicherweise müsst ihr die Zeile gui.iconbitmap(default='password.ico') rausnehmen.

Code: Alles auswählen

import random
import string
from tkinter import *

bereich = string.digits + string.ascii_letters

def PasswortGenerator():
    for j in range(0,10):
        password = ''
        for i in range(0,10):
            
            text = random.choice(bereich)
            password = password + text

        password = password + '\n'
        Feld.insert(END, password)

    

gui = Tk()
gui.title('Passwortgenerator')
gui.iconbitmap(default='password.ico')

scrollbar = Scrollbar(gui)
scrollbar.pack(side=RIGHT, fill=Y)

Feld = Text(gui,width='50', height='25', yscrollcommand=scrollbar.set)
Feld.pack(fill=BOTH, expand=1)

scrollbar.config(command=Feld.yview)

PasswortButton = Button(gui,text='Start',command=PasswortGenerator)
PasswortButton.pack(side=LEFT)

ExitButton = Button(gui, text='Beenden',command=gui.destroy)
ExitButton.pack(side=RIGHT)

gui.mainloop()

Re: Passwortgenerator (mit GUI)

Verfasst: Sonntag 1. Mai 2011, 17:36
von sma
Wenn du willst, kann du zufällige Passwörter auch in einer Zeile generieren (siehe unten). Ich würde auch empfehlen, Programmlogik (das Generieren der Passwörter) und Darstellung (das GUI) strikt zu trennen. Mache "PasswortGenerator" lieber zu einer Funktion "generiere10Passwörter" (oder eine, die die Anzahl als Parameter nimmt), die eine Liste zurück gibt. Setze dann das Feld außerhalb der Funktion.

Code: Alles auswählen

def generierePasswort():
    return "".join(random.choice(bereich) for i in range(random.randrange(6, 10)))

def generierePasswörter(n):
    return [generierePasswort() for i in range(n)]

Feld.insert(END, "\n".join(generierePasswörter(10)))
Stefan

PS: Ich freue mich schon auf die Diskussion, ob man einen Umlaut in einem Funktionnamen haben sollte ;) In Python 3 ist das jedenfalls kein Problem mehr - und wenn schon Deutsch, dann bitte richtig geschrieben. Unicode macht's möglich.

Re: Passwortgenerator (mit GUI)

Verfasst: Sonntag 1. Mai 2011, 18:33
von derdon
sma: Magst du random.sample nicht? Die Funktion "generierPasswörter" würde ich als Generator schreiben und den unbenutzten Namen i zu _ umbenennen, damit klar ist, dass dieses Objekt nicht verwendet wird.

Re: Passwortgenerator (mit GUI)

Verfasst: Sonntag 1. Mai 2011, 18:38
von lunar
@derdon: "random.sample()" kann man nicht zur Erzeugung zufälliger Passwörter nutzen, da die Elemente ohne Wiederholung gezogen werden:
Return a k length list of unique elements chosen from the population sequence.

Re: Passwortgenerator (mit GUI)

Verfasst: Sonntag 1. Mai 2011, 19:06
von derdon
Stimmt, daran habe ich nicht gedacht. Problematisch wird das ja vor allem, wenn "k" größer als "population" ist, also mit anderen Worten die Länge des Passwortes länger als die Anzahl aller zugelassenen Zeichen ist.