From a16a4c5b2f4638391f8eee900f8d6192d2c4a85f Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 6 Jun 2017 14:10:53 +0000 Subject: [PATCH] PasswortChecker.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Es soll eine C# Klasse implementiert werden, die PasswortChecker heißt. Diese soll eine Methode int erhalten, die einen String übergeben bekommt, der ein Passwort repräsentiert. Dieses soll sodann auf diverse Kriterien hin überprüft werden. (Die Kriterien ergeben sich aus dem Quelltext). --- PasswortChecker.cs | 69 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 PasswortChecker.cs 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