142 lines
4.8 KiB
Java
142 lines
4.8 KiB
Java
|
|
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) {
|
|
// Variablen werden initialisiert
|
|
String passwort = null;
|
|
boolean check = false; // Ein boolean das anzeigt, ob ein Passwort sicher ist
|
|
Scanner in = new Scanner(System.in);
|
|
System.out.println("Geben Sie ein Passwort zur überprüfung ein:");
|
|
|
|
passwort = in.nextLine();
|
|
// Schleife beinhaltet die Überprüfung des Passworts auf die einzelnen Bedingungen
|
|
// s wie die wiederholung des Vorgangs bei nicht sicherem Passwort.
|
|
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);
|
|
|
|
// ende des Programms
|
|
|
|
System.out.println("...und Tschüss");
|
|
in.close();
|
|
}
|
|
|
|
}
|