package uebung4; /*Programm, dass ein eingegebenes Passwort auf seine Sicherheit überprüft. Es soll mindestens 20 Zeichen und mindestens 3 Klein-, Großbuchstaben, Ziffern und Sonderzeichen beinhalten.*/ import java.util.Scanner; public class Passwort_Check { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); boolean istPasswortSicher = false;//Passwort wird initial auf false gesetzt String passwort;// String-Variable zum Speichern des Passworts System.out.println("Willkommen beim Passwort-Checker!"); //Überprüfung und Ausgabe des Problems oder der Sicherheit des Passworts do { System.out.print("Bitte geben Sie ein Passwort ein: "); passwort = scanner.nextLine();/* speichert die Benutzereingabe in der Variable passwort*/ if (!checkLaenge(passwort)) { System.out.println("Fehler: Das Passwort ist zu kurz. Es muss mindestens 20 Zeichen lang sein."); } else if (!checkKleinBuchstaben(passwort)) { System.out.println("Fehler: Das Passwort muss mindestens 3 Kleinbuchstaben enthalten."); } else if (!checkGrossBuchstaben(passwort)) { System.out.println("Fehler: Das Passwort muss mindestens 3 Großbuchstaben enthalten."); } else if (!checkZiffer(passwort)) { System.out.println("Fehler: Das Passwort muss mindestens 3 Ziffern enthalten."); } else if (!checkSonderZeichen(passwort)) { System.out.println("Fehler: Das Passwort muss mindestens 3 Sonderzeichen enthalten."); } else { istPasswortSicher = true; System.out.println("Passwort ist sicher."); } }while (!istPasswortSicher);//wiederhole die Eingabe bis Passwort sicher ist scanner.close(); System.out.println("Programm beendet."); //wenn das Passwort sicher ist, wird das Programm beendet } /*Rückgabewert ist true, wenn das Passwort mindestens 20 Zeichen enthält, ansonsten wird false zurückgegeben*/ public static boolean checkLaenge(String passwort) { return passwort != null && passwort.length() >= 20; } /*Rückgabewert ist true, wenn das Passwort mindestens 3 Kleinbuchstaben enthält, ansonsten wird false zurückgegeben*/ public static boolean checkKleinBuchstaben(String passwort) { //Anzahl der Kleinbuchstaben wird gezählt int count = 0; if (passwort==null) { return false; } for (char c : passwort.toCharArray()) { if (Character.isLowerCase(c)) { count++; } } return count >= 3; //wenn Anzahl der Kleinbuchstaben größer gleich 3 ist, wird true zurückgegeben } /*Rückgabewert ist true, wenn das Passwort mindestens 3 Großbuchstaben enthält, ansonsten wird false zurückgegeben*/ public static boolean checkGrossBuchstaben(String passwort) { //Anzahl der Großbuchstaben wird gezählt int count = 0; if (passwort==null) { return false; } for (char c : passwort.toCharArray()) { if (Character.isUpperCase(c)) { count++; } } return count >= 3; //wenn Anzahl der Großbuchstaben größer gleich 3 ist, wird true zurückgegeben } /*Rückgabewert ist true, wenn das Passwort mindestens 3 Ziffern enthält, ansonsten wird false zurückgegeben*/ public static boolean checkZiffer(String passwort) { //Anzahl der Zahlen wird gezählt int count = 0; if (passwort==null) { return false; } for (char c : passwort.toCharArray()) { if (Character.isDigit(c)) { count++; } } return count >= 3; //wenn Anzahl der Zahlen größer gleich 3 ist, wird true zurückgegeben } /*Rückgabewert ist true, wenn das Passwort mindestens 3 Sonderzeichen enthält, ansonsten wird false zurückgegeben*/ public static boolean checkSonderZeichen(String passwort) { int count = 0; if (passwort==null) { return false; } for (char c : passwort.toCharArray()) { int ascii = (int) c; if ((ascii >= 32 && ascii <= 47) || (ascii >= 58 && ascii <= 64) || (ascii >= 91 && ascii <= 96) || (ascii >= 123 && ascii <= 126) || ascii == 128 || ascii == 130 || ascii == 132 || ascii == 136) { count++; } } return count >= 3; //wenn Anzahl der Sonderzeichen größer gleich 3 ist, wird true zurückgegeben } }