diff --git a/PasswortChecker.cs b/PasswortChecker.cs new file mode 100644 index 0000000..49391dd --- /dev/null +++ b/PasswortChecker.cs @@ -0,0 +1,69 @@ +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; + + string[] passwortBestandteile = Regex.Split(passwort, @""); + passwortBestandteile = passwortBestandteile.Where(val => val != "").ToArray(); + + zeichenAnzahl = passwortBestandteile.Length; + + 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 ++; + 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++; + } + + if (zeichenAnzahl >= 12) punkteZaehler++; else Console.WriteLine("\r\nPunktverlust -1 wegen zu wenig 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 (grossbuchstabenAnzahl >= 2) punkteZaehler++; else Console.WriteLine("Punktverlust -1 wegen zu weniger Groß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"); + + 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); + + Console.WriteLine(Convert.ToString(ergebnis)); + } +} \ No newline at end of file