You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
B-GOP01/PasswortChecker.cs

71 lines
3.2 KiB
C#

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));
}
}