Das Problem, das ich habe, ist die Wiederholung des ersten Passwort-Prozesses vor der Bestätigung des Passwortes.Java Password Checking
Das Passwort muss mindestens 8 Zeichen lang sein.
muss das Passwort mindestens enthalten:
- ein Alphazeichen
[a-zA-Z]
- ein numerisches Zeichen
[0-9]
- ein Zeichen, die nicht alphanumerischen wie
! # @ $ %^& * () - _ = + [ ] ; : ' " , <.>/?
ist Das Passwort darf nicht:
- Leerzeichen enthalten
- mit einem Ausruf beginnen
[!]
oder ein Fragezeichen[?]
Hier ist der Code
public static void main(String[] args) {
//declare variables
String inputPassword; // variable for password
String confirmPassword;
// set up input stream from the keyboard
Scanner input = new Scanner (System.in);
// ask for password
System.out.print("Password : ");
inputPassword = input.next();
passCheck(inputPassword);
System.out.print("Please confirm your password : ");
confirmPassword = input.next();
if(inputPassword.matches(confirmPassword)){
System.out.println("Password successfully created.");
} else {
System.out.println("Passwords do not match.");
}
}
public static void passCheck(String password){
boolean valid = true;
if(password.length() < 8){
System.out.println("Password is not eight characters long.");
valid = false;
}
String upperCase = "(.*[A-Z].*)";
if(!password.matches(upperCase)){
System.out.println("Password must contain at least one capital letter.");
valid = false;
}
String numbers = "(.*[0-9].*)";
if(!password.matches(numbers)){
System.out.println("Password must contain at least one number.");
valid = false;
}
String specialChars = "(.*[ ! # @ $ %^& * () - _ = + [ ] ; : ' \" , <.>/?].*)";
if(!password.matches(specialChars)){
System.out.println("Password must contain at least one special character.");
valid = false;
}
String space = "(.*[ ].*)";
if(password.matches(space)){
System.out.println("Password cannot contain a space.");
valid = false;
}
if(password.startsWith("?")){
System.out.println("Password cannot start with '?'.");
valid = false;
}
if(password.startsWith("!")){
System.out.println("Password cannot start with '!'.");
valid = false;
}
if(valid){
System.out.println("Password is valid.");
}
}
Was ich bekomme, nachdem er mir sagt, einer der die Probleme, es wird gebeten, das Passwort zu bestätigen, das ist nicht was ich will.
Sie könnten '[^ A-Za-z0-9]' für nicht-alphanumerische Zeichen verwenden. –
geben Sie die Gültigkeit des Passworts (z. B. ein Boolescher Wert) von passCheck zurück. In main können Sie den Boolean testen, bevor Sie fortfahren. –
Ein Kennwort mit Leerzeichen, Fragezeichen und Ausrufezeichen ist stärker als eines, das nicht. – tbodt