diff --git a/PasswortChecker b/PasswortChecker index c4728ae..4be85a5 100644 --- a/PasswortChecker +++ b/PasswortChecker @@ -4,6 +4,7 @@ using System.Text.RegularExpressions; class PasswortChecker { + public int isGutesPasswort(string passwort) { int zeichenAnzahl = 0; @@ -17,6 +18,7 @@ class PasswortChecker int punkteZaehler = 0; + // Array zur prüfung der Stringbestandteile im einzelnen erzeugen string[] passwortBestandteile = Regex.Split(passwort, @""); passwortBestandteile = passwortBestandteile.Where(val => val != "").ToArray(); @@ -25,9 +27,9 @@ class PasswortChecker int passwortBestandteileIndex = 0; foreach (string passwortBestandteil in passwortBestandteile) { - if (Regex.IsMatch(passwortBestandteil, "[a-zA-Z]")) buchstabenAnzahl++; - if (Regex.IsMatch(passwortBestandteil, "[A-Z]")) grossbuchstabenAnzahl++; - if (Regex.IsMatch(passwortBestandteil, "[a-z]")) kleinbuchstabenAnzahl++; + // Prüfung auf Erfüllung der Kriterien mit regulären Ausdrücken + if (Regex.IsMatch(passwortBestandteil, "[A-Z]")) { grossbuchstabenAnzahl++; buchstabenAnzahl++; } + if (Regex.IsMatch(passwortBestandteil, "[a-z]")) { kleinbuchstabenAnzahl++; buchstabenAnzahl++; } if (Regex.IsMatch(passwortBestandteil, "[0-9]")) ziffernAnzahl++; if (!Regex.IsMatch(passwortBestandteil, "[A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]")) sonderzeichenAnzahl++; @@ -40,11 +42,12 @@ class PasswortChecker passwortBestandteileIndex++; } + // Ausgabe der Gründe für etwaige Punktabzüge if (zeichenAnzahl >= 12) punkteZaehler++; else Console.WriteLine("\r\nPunktverlust -1 wegen zu weniger Zeichen - Es sollen min. 12 sein und sind nur: " + Convert.ToString(zeichenAnzahl)); - if (buchstabenAnzahl >= 2) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Buchstaben"); + if (kleinbuchstabenAnzahl >= 1) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Kleinbuchstaben"); if (grossbuchstabenAnzahl >= 2) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Großbuchstaben"); + if (buchstabenAnzahl >= 2) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Buchstaben"); if (ziffernAnzahl >= 2) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Ziffern"); - if (kleinbuchstabenAnzahl >= 1) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Kleinbuchstaben"); if (sonderzeichenAnzahl >= 2) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Sonderzeichen"); if (sonderzeichenInnerhalb >= 1) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen fehlendem oder falscher Position eines Sonderzeichens"); if (zifferInnerhalb >= 1) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen fehlender oder falscher Position einer Ziffer"); @@ -64,7 +67,17 @@ class hauptProgramm PasswortChecker pwc = new PasswortChecker(); int ergebnis = pwc.isGutesPasswort(passwort); - Console.WriteLine("Das Passwort erreicht " + Convert.ToString(ergebnis) + " von 8 erreichbaren Punkten"); + string antwort = ""; + if (ergebnis < 8) + { + antwort = "Das ist zu wenig, bitte ändren Sie das Passwort und starten Sie die Anwendung erneut!"; + } + else + { + antwort = "Das ist Perfekt - alle Kriterien sind erfüllt!"; + } + + Console.WriteLine("Das Passwort erreicht " + Convert.ToString(ergebnis) + " von 8 erreichbaren Punkten. " + antwort); // Konsolenfenster offen halten Console.WriteLine("Druecken Sie zum Bennden eine beliebige Taste");