Erstelle einen Passwortgenerator, der nach einem Klick auf einen Button ein zufälliges Passwort generiert. Das Passwort soll 12 Stellen haben und aus Groß-, Kleinbuchstaben und Ziffern bestehen.
private void btnPasswotErzeugen_Click(object sender, EventArgs e) { // Zufallszahl erzeugen // Zahl in Buchstaben umwandeln // Passwort um neuen Buchstaben erweitern }
Das Umwandeln von Zahlen in Buchstaben kann z.B. mit Hilfe einer ASCII-Tabelle geschehen.
Wenn wir nur 10 Zufallszahlen benötigen, funktioniert folgender Quelltext.
tbPasswort.Text = ""; Random rndZufallszahlengenerator = new Random(); for (int i = 0; i < 10; i++) { int iZahl = rndZufallszahlengenerator.Next(10); tbPasswort.Text += iZahl; }
Man kann die Zufallszahlen (eigentlich Pseudo-Zufallszahlen) auch selbst erzeugen, wenn man verstehen möchte, was in der Klasse Random
passiert. Das ist gar nicht so schwierig und wird im Artikel zum Kongruenzgenerator erklärt. Sinnvolle Parameter für die im Artikel erwähnten Parameter stehen im englischen Artikel Linear congruential generator. Eine fertige Implementierung befindet sich in den Fußnoten.1)
Passwords.txt
auf dem Desktop abspeichern. Beachte dazu die Informationen zu Dateioperationen.
Vermutlich gibt es in dem Quelltext im Moment Doppellungen. So wird das Passwort erstellt, wenn man auf den einen Button drückt und auch beim Drücken des anderen Button. Ein wichtiges Ziel ist, diese Doppelungen zu vermeiden. Warum wohl?
Ein Mittel dafür ist der Einsatz von Methoden. Informiere dich über den Aufbau und Verwendung von Methoden.
string generierePasswort()
, die ein Passwort generiert. Nutze diese Methode und rufe sie in den Eventmethoden der beiden Buttons auf.namespace Zufallszahlengenerator { /// <summary> /// Ein Zufallszahlengenerator, der Zufallszahlen gemäßt der Beschreibung unter /// https://de.wikipedia.org/wiki/Linearer_Kongruenzgenerator#Linearer_Kongruenzgenerator /// erzeugt. /// </summary> class Zufallszahlengenerator { long y; long a; long b; long m; public Zufallszahlengenerator() : this(DateTime.Now.Millisecond) { } public Zufallszahlengenerator(long start) { // Startwerte übernommen aus https://en.wikipedia.org/wiki/Linear_congruential_generator y = start; a = 22695477; b = 1; m = Convert.ToInt64(Math.Pow(2, 31)); } /// <summary> /// Erzeugt eine Zufallszahl zwischen 0 und dem übergebenen maximalen Wert. /// </summary> public long nächsteZahl(long max) { // Bestimmung des nächsten Wertes y = (y * a + b) % m; return y % max; } } }