128 lines
4.8 KiB
Java
128 lines
4.8 KiB
Java
// 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 message {
|
|
|
|
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
|
|
}
|
|
|
|
} |