C# :: Aufgabe #77 :: Lösung #7
14 Lösungen

#77
Passwortgenerator mit Parametern
Anfänger - C#
von pocki
- 27.11.2014 um 18:11 Uhr
Erstelle ein Programm/Funktion welche/s ein zufälliges Passwort erzeugt.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
#7

von niknik (1230 Punkte)
- 14.08.2015 um 10:15 Uhr
Todesumständlich, aber funktioniert prima.
Leider nur 'ne Konsolenanwendung, aber es wurden daran ja keine Anforderungen gestellt
C#-Code
Leider nur 'ne Konsolenanwendung, aber es wurden daran ja keine Anforderungen gestellt

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PasswortGenerator { class Program { /* * ASCII CODE: * 33-126, falls alles erlaubt * 48-57 Zahlen * 97-122 Kleinbuchstaben * 65-90 Großbuchstaben * Rest Sonderzeichen */ public static string Generiere(int l, bool s, bool g, bool k, bool z) { Random rnd = new Random(); string ausgabe = ""; bool case1 = (!s && !g && !k && !z); // 0000 bool case2 = (!s && !g && !k && z); // 0001 bool case3 = (!s && !g && k && !z); // 0010 bool case4 = (!s && !g && k && z); // 0011 bool case5 = (!s && g && !k && !z); // 0100 bool case6 = (!s && g && !k && z); // 0101 bool case7 = (!s && g && k && !z); // 0110 bool case8 = (!s && g && k && z); // 0111 bool case9 = ( s && !g && !k && !z); // 1000 bool case10 = ( s && !g && !k && z); // 1001 bool case11 = ( s && !g && k && !z); // 1010 bool case12 = ( s && !g && k && z); // 1011 bool case13 = ( s && g && !k && !z); // 1100 bool case14 = ( s && g && !k && z); // 1101 bool case15 = ( s && g && k && !z); // 1110 bool case16 = ( s && g && k && z); // 1111 // nichts erlaubt if (case1) { return ""; } // nur Zahlen else if (case2) { for (int i = 0; i < l; i++) { char character = (char)rnd.Next(48, 58); ausgabe += character.ToString(); } return ausgabe; } // nur Kleinbuchstaben else if (case3) { for (int i = 0; i < l; i++) { char character = (char)rnd.Next(97, 123); ausgabe += character.ToString(); } return ausgabe; } // Kleinbuchstaben & Zahlen else if (case4) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 58; // wegen while-schleife while ((asciizahl > 57 && asciizahl < 97)) { asciizahl = rnd.Next(48, 123); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // nur Großbuchstaben else if (case5) { for (int i = 0; i < l; i++) { char character = (char)rnd.Next(65, 91); ausgabe += character.ToString(); } return ausgabe; } // Großbuchstaben & Zahlen else if (case6) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 58; // wegen while-schleife while ((asciizahl > 57 && asciizahl < 65)) { asciizahl = rnd.Next(48, 91); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Großbuchstaben & Kleinbuchstaben else if (case7) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 91; // wegen while-schleife while ((asciizahl > 90 && asciizahl < 97)) { asciizahl = rnd.Next(65, 123); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Großbuchstaben, Kleinbuchstaben & Zahlen else if (case8) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 58; // wegen while-schleife while ((asciizahl > 57 && asciizahl < 65) || (asciizahl > 90 && asciizahl < 97)) { asciizahl = rnd.Next(48, 123); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // nur Sonderzeichen else if (case9) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 57; // wegen while-schleife while ((asciizahl > 47 && asciizahl < 58) || (asciizahl > 64 && asciizahl < 91) || (asciizahl > 96 && asciizahl < 123)) { asciizahl = rnd.Next(33, 127); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Sonderzeichen & Zahlen else if (case10) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 90; // wegen while-schleife while ((asciizahl > 64 && asciizahl < 91) || (asciizahl > 96 && asciizahl < 123)) { asciizahl = rnd.Next(33, 127); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Sonderzeichen & Kleinbuchstaben else if (case11) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 57; // wegen while-schleife while ((asciizahl > 47 && asciizahl < 58) || (asciizahl > 64 && asciizahl < 91)) { asciizahl = rnd.Next(33, 127); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Sonderzeichen, Kleinbuchstaben & Zahlen else if (case12) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 65; // wegen while-schleife while ((asciizahl > 64 && asciizahl < 91)) { asciizahl = rnd.Next(33, 127); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Sonderzeichen & Großbuchstaben else if (case13) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 57; // wegen while-schleife while ((asciizahl > 47 && asciizahl < 58) || (asciizahl > 96 && asciizahl < 123)) { asciizahl = rnd.Next(33, 127); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Sonderzeichen, Großbuchstaben & Zahlen else if (case14) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 97; // wegen while-schleife while ((asciizahl > 96 && asciizahl < 123)) { asciizahl = rnd.Next(33, 127); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Sonderzeichen, Großbuchstaben & Kleinbuchstaben else if (case15) { int asciizahl; for (int i = 0; i < l; i++) { asciizahl = 57; // wegen while-schleife while ((asciizahl > 47 && asciizahl < 58)) { asciizahl = rnd.Next(33, 127); } char character = (char)asciizahl; ausgabe += character.ToString(); } return ausgabe; } // Alles erlaubt else if (case16) { for (int i = 0; i < l; i++) { char character = (char)rnd.Next(33, 127); ausgabe += character.ToString(); } return ausgabe; } else { throw new Exception("Something went horribly wrong"); } } static void Main(string[] args) { int laenge; bool sonder = false, gross = false, klein = false, zahlen = false; char antwort; // Länge setzen do { Console.WriteLine("Wie lang soll das Passwort werden?"); } while (!int.TryParse(Console.ReadLine(), out laenge)); // Parameter setzen ANFANG Console.WriteLine("Sind Sonderzeichen erlaubt? (Y/N)"); antwort = Console.ReadLine().ToUpper()[0]; if (antwort == 'Y') { sonder = true; } Console.WriteLine("Sind Großbuchstaben erlaubt? (Y/N)"); antwort = Console.ReadLine().ToUpper()[0]; if (antwort == 'Y') { gross = true; } Console.WriteLine("Sind Kleinbuchstaben erlaubt? (Y/N)"); antwort = Console.ReadLine().ToUpper()[0]; if (antwort == 'Y') { klein = true; } Console.WriteLine("Sind Zahlen erlaubt? (Y/N)"); antwort = Console.ReadLine().ToUpper()[0]; if (antwort == 'Y') { zahlen = true; } // Parameter setzen ENDE // Passwort generieren und ausgeben Console.Clear(); Console.WriteLine("Dein Passwort: \n{0}", Generiere(laenge, sonder, gross, klein, zahlen)); Console.ReadLine(); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1