uebung4/message.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
}
}