You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.4 KiB

package com.company.passwort;
public class Password {
private char[] passwordaktuell;
public Password(char[] passwordAktuell) {
this.passwordaktuell = java.util.Arrays.copyOf(passwordAktuell, passwordAktuell.length);
}
boolean isStrong(String password) {
// Enthält mindestens acht Zeichen
if (password.length() < 8) {
return false;
}
// Zähle einzelne Zeichentypen
int lowercase = 0;
int uppercase = 0;
int number = 0;
int special = 0;
// Gehe String durch
for (int i = 0; i < password.length(); i++) {
char c = password.charAt(i);
// Bestimme Character-Code
int charCode = charToNumber(c);
// ist ein Kleinbuchstabe
if (charCode >= charToNumber('a') && charCode <= charToNumber('z'))
lowercase += 1;
// ist ein Großbuchstabe
else if (charCode >= charToNumber('A') && charCode <= charToNumber('Z'))
uppercase += 1;
// ist eine Ziffer
else if (charCode >= charToNumber('0') && charCode <= charToNumber('9'))
number += 1;
// ist ein Sonderzeichen (! oder *)
else if (charCode == charToNumber('!') || charCode == charToNumber('*'))
special += 1;
}
// Sind alle Zeichen gezählt, werte aus
// Gebe true zurück, wenn alle Bedingungen erfüllt sind
if (lowercase > 0 && uppercase > 0 && number > 0 && special > 0) {
return true;
} else {
return false;
}
}
// Funktion zum Konvertieren eines Buchstabens in Character-Code. Die
// Funktion erhält das Zeichen, für den der Code zurückgeliefert wird.
int charToNumber(char c) {
return (int) c;
}
public boolean isCorrect(char[] passwordEingabe){
if(passwordEingabe.equals(this.passwordaktuell)){
return true;
} else{
return false;
}
}
public boolean changePassword(char[] passwordOld, char[] passwordNew){
if(isCorrect(passwordOld)){
if(isStrong(String.valueOf(passwordNew))){
return true;
}else{
return false;
}
}else{
return false;
}
}
public void deletePassword(char[] passwordOld){
if(isCorrect(passwordOld)){
//Löschen
}
}
}