import java.util.Scanner; /** * Dieses Programm prüft anhand von fünf Bedingungen, ob ein Passwort sicher * ist: * - Mindestens 20 Zeichen lang * - Enthält mindestens drei Kleinbuchstaben * - Enthält mindestens drei Großbuchstaben * - Enthält mindestens drei Ziffern * - Enthält mindestens drei Sonderzeichen */ public class Passwort_Check { /** * Prüft, ob das Passwort mindestens 20 Zeichen lang ist. * * @param password Das zu prüfende Kennwort. * @return True, wenn das Kennwort mindestens 20 Zeichen lang ist, sonst false. */ public static boolean checkLaenge(String passwort) { if (passwort == null) { return false; } return passwort.length() >= 20; } /** * Prüft, ob das Passwort mindestens drei Kleinbuchstaben enthält. * * @param password Das zu prüfende Kennwort. * @return True, wenn das Kennwort mindestens drei Kleinbuchstaben enthält, * sonst false. */ public static boolean checkKleinBuchstaben(String passwort) { if (passwort == null) { return false; } return passwort.matches(".*[a-z].*[a-z].*[a-z].*"); } /** * Prüft, ob das Passwort mindestens drei Großbuchstaben enthält. * * @param password Das zu prüfende Kennwort. * @return True, wenn das Kennwort mindestens drei Großbuchstaben enthält, sonst * false. */ public static boolean checkGrossBuchstaben(String passwort) { if (passwort == null) { return false; } return passwort.matches(".*[A-Z].*[A-Z].*[A-Z].*"); } /** * Prüft, ob das Passwort mindestens drei Ziffern enthält. * * @param password Das zu prüfende Kennwort. * @return True, wenn das Kennwort mindestens dreistellig ist, sonst false. */ public static boolean checkZiffer(String passwort) { if (passwort == null) { return false; } return passwort.matches(".*[0-9].*[0-9].*[0-9].*"); } /** * Prüft, ob das Passwort mindestens drei Sonderzeichen enthält. * * @param password Das zu prüfende Kennwort. * @return True, wenn das Kennwort mindestens drei Sonderzeichen enthält, sonst * false. */ public static boolean checkSonderZeichen(String passwort) { if (passwort == null) { return false; } // \\x20-\\x2F -> SP, !, ", #, $, %, &, ', (, ), *, +, ,, -, ., / // \\x3A-\\x40 -> :, ;, <, =, >, ?, @ // \\x5B-\\x60 -> [, \, ], ^, -, ` // \\x7B-\\x7E -> {, |, }, ~ // \\x80 -> € String reg = "[\\x20-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E\\x80]"; return passwort.matches(".*" + reg + ".*" + reg + ".*" + reg + ".*"); // String negReg = "[^A-Za-z0-9\\x00-\\x1F\\x7F]"; // return passwort.matches(".*"+negReg+".*"+negReg+".*"+negReg+".*"); // return } /** * Hauptmethode, die den Benutzer zur Eingabe eines Passworts auffordert und * dessen Sicherheit anhand der definierten Bedingungen überprüft. * * @param args Kommandozeilenargumente (werden in diesem Programm nicht * verwendet). */ public static void main(String[] args) { String passwort = null; boolean check = false; Scanner in = new Scanner(System.in); System.out.println("Geben Sie ein Passwort zur überprüfung ein:"); passwort = in.nextLine(); do { if (!checkLaenge(passwort)) { System.out.println("Passwort ist zu kurz!"); } else if (!checkKleinBuchstaben(passwort)) { System.out.println("Es fehlen Kleinbuchstaben!"); } else if (!checkGrossBuchstaben(passwort)) { System.out.println("Es fehlen Großbuchstaben!"); } else if (!checkZiffer(passwort)) { System.out.println("Es fehlen Ziffern!"); } else if (!checkSonderZeichen(passwort)) { System.out.println("Es fehlen Sonderzeichen!"); } else { System.out.println("Passwort ist sicher."); check = true; } if (check == false) { System.out.println("Geben Sie ein verbessertes Passwort zur überprüfung ein:"); passwort = in.nextLine(); } } while (check == false); System.out.println("...und Tschüss"); in.close(); } }