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


  • Mod

    Wie man seinen Beitrag lesbar formatiert
    Wie man Fragen richtig stellt

    Auß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?


Anmelden zum Antworten