Passwort checker (abgetrennt aus Ultranekromantie "Prüfe auf nur erlaubte Zeichen im String")
-
Hallo zusammen,
Habe habe folgende Aufgabe bekommen kann mir jemand weiterhelfen ? Mir einen Lösungsansatz mit auf den Weg geben komme hier nicht weiter und bin dankbar für jeden Ratschlag
Aufgabe: Gute Passwörter sollten so aufgebaut sein, dass sie nicht leicht durch massives Ausprobieren
aufgrund von Wörterbüchern und Zahlenfolgen erraten werden können.
Ein gutes Passwort sollte zum Beispiel mindestens
• zwölf Zeichen,
• zwei Buchstaben,
• zwei Ziffern,
• zwei Großbuchstaben und
• einen Kleinbuchstaben,
• zwei Sonderzeichen
enthalten und es sollen sich mindestens
• eine Ziffer und
• ein Sonderzeichen, innerhalb des Passwortes befinden, d. h., nicht das erste oder letzte
Zeichen sein.AxBCD1&&a8cde erfüllt zum Beispiel diese Kriterien vollständig, 1passw0rtxxx aber erfüllt
nicht alle diese Bedingungen (kein Sonderzeichen und kein Großbuchstabe).
Implementieren Sie eine C#-Klasse PasswortChecker mit einer Methode int
isGutesPasswort(string), die überprüft, ob ein Passwort obige Kriterien erfüllt oder nicht.
Das Passwort soll dabei als Zeichenkette gegeben sein. Für jede erfüllte Bedingung (s. o.) gibt
es einen Pluspunkt. Damit sind acht Pluspunkte das Maximum, was von sehr guten Passwörtern
erreicht werden kann.
Ein Sonderzeichen soll einfach ein Zeichen sein, das keine Ziffer und kein Unicode-Buchstabe
ist. Verwenden Sie keine Methoden der Klasse Char, um einzelne Zeichen zu überprüfen.
-
Klar können wir helfen. Du hast aber gar keinen Code gezeigt und damit kannst du auch keine Fragen zum Code stellen.
-
using System;
using System.Text;
using System.Text.RegularExpressions;public class PasswortChecker {
public static void Main () {//Eingabe und Ausgabe des Passworts
Console.WriteLine("Bitte geben Sie ihr Passwort ein: ");
string BenutzerPw = Console.ReadLine();
Console.WriteLine(isGutesPasswort.Passwortstärke);
Console.ReadLine();
}
public enum PasswortStärke {
SehrSchwach = 1,
Schwach = 2,
Medium = 3,
Stark = 4,
SehrStark = 5,
Sicher = 6,
SehrSicher = 7,
Maximum = 8
}public static int isGutesPasswort (string BenutzerPw){
int minLaenge = 12;
int pwscore = 1;
if (BenutzerPw.Length < 1)
return PasswortStärke.SehrSchwach;
if (BenutzerPw.Length < 4)
return PasswortStärke.SehrSchwach;
if (BenutzerPw.Length >=pwscore++;
if (BenutzerPw.Length >= 12) pwscore++;
if (Regex.IsMatch(BenutzerPw, @"[0-9]+(\.[0-9][0-9]?)?")) //number only //"^\d+" if you need to match more than one digit. pwscore++; if (Regex.IsMatch(BenutzerPw, @"^(?=.*[a-z])(?=.*[A-Z]).+")) //both, lower and upper case
pwscore++;
if (Regex.IsMatch(BenutzerPw, @"[!,@,#,,%,^,&,*,?,_,~,-,£,(,)]")) //^[A-Z]+
pwscore++;
return (Passwortstärke)pwscore;}
}
-
Vielen Dank für die schnelle Antwort ich hoffe mir kann nicht jemand damit weiterhelfen
-
Wie man seinen Beitrag lesbar formatiert
Wie man Fragen richtig stelltAußerdem Basislektion Netiquette: Leitest du im echten Leben auch Unterhaltungen ein mit "Erinnert ihr euch noch an das Gespräch, das wir am 24. Juli 2008 hatten? Das ist ganz wichtig, dass ihr euch alle genau daran erinnert!" und fragst dann etwas, das nur ganz weitläufig mit der Unterhaltung von vor 10 Jahren zu tun hat? Nein? Wieso machst du es dann hier?