using System; using System.Linq; using System.Text.RegularExpressions; class PasswortChecker { public int isGutesPasswort(string passwort) { int zeichenAnzahl = 0; int buchstabenAnzahl = 0; int ziffernAnzahl = 0; int grossbuchstabenAnzahl = 0; int kleinbuchstabenAnzahl = 0; int sonderzeichenAnzahl = 0; int zifferInnerhalb = 0; int sonderzeichenInnerhalb = 0; int punkteZaehler = 0; // Array zur prüfung der Stringbestandteile im einzelnen erzeugen string[] passwortBestandteile = Regex.Split(passwort, @""); passwortBestandteile = passwortBestandteile.Where(val => val != "").ToArray(); zeichenAnzahl = passwortBestandteile.Length; int passwortBestandteileIndex = 0; foreach (string passwortBestandteil in passwortBestandteile) { // 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++; if (passwortBestandteileIndex != 0 && passwortBestandteileIndex != zeichenAnzahl) { if (!Regex.IsMatch(passwortBestandteil, "[A-Za-z0-9öäüÄÖÜßáàâéèêíìîóòôúùû]")) sonderzeichenInnerhalb++; if (Regex.IsMatch(passwortBestandteil, "[0-9]")) zifferInnerhalb++; } 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 (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 (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"); return punkteZaehler; } } class hauptProgramm { static void Main(string[] args) { Console.WriteLine("Bitte geben Sie das Passwort ein, das getestet werden soll: "); string passwort = Console.ReadLine(); PasswortChecker pwc = new PasswortChecker(); int ergebnis = pwc.isGutesPasswort(passwort); 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"); Console.ReadKey(); } }