So habe ich dieses grundlegende Passwortsystem gehen, und bis jetzt, habe ich meine Länge Checker Code aussortiert (in meinem System kann Passwort nur zwischen 6 und 12 Zeichen lang sein.)Notwendigkeit, Logik des Passwortsystems zu verbessern
Allerdings ist der Stärkeüberprüfer komplizierter, weil ich Kennwörter in drei Kategorien, SCHWACH, STARK und MITTEL, sortieren möchte. Die Kategorien werden durch die Arten von Zeichen im Passwort bestimmt, also wäre "Alpha" SCHWACH, "Alpha" wäre MEDIUM und "Alpha1234" wäre STRONG.
Wenn die Passwortstärke schwach ist, möchte ich, dass das Programm den Benutzer auffordert, zurückzugehen und ein anderes Passwort einzugeben. Wenn die Stärke MEDIUM ist, gebe ich dem Benutzer die Option, entweder ein anderes Passwort einzugeben oder das Passwort zu behalten eingegeben, und wenn die Stärke stark ist, wird das das Passwort automatisch
Bisher habe ich geschrieben drei Arrays, die die Zeichensätze definieren gehalten:
public static String[] uppercase = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
public static String[] lowercase = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
public static int[] numbers; {
numbers = new int[10];
numbers[0] = 0;
numbers[1] = 1;
numbers[2] = 2;
numbers[3] = 3;
numbers[4] = 4;
numbers[5] = 5;
numbers[6] = 6;
numbers[7] = 7;
numbers[8] = 8;
numbers[9] = 9;
}
Hier sind die Zeichen checker Methoden:
public static boolean containsUppercase(String p) {
for (int i=0; i < p.length(); i++) {
for (int j = 0; j < uppercase.length; j++) {
if (Character.toString(p.charAt(i)).equals(uppercase[j])) {
return true;
}
}
}
return false;
}
public static boolean containsLowercase(String p) {
for (int i=0; i < p.length(); i++) {
for (int j = 0; j < lowercase.length; j++) {
if (Character.toString(p.charAt(i)).equals(lowercase[j])) {
return true;
}
}
}
return false;
}
public static boolean containsNumbers(String p) {
for (int i=0; i < p.length(); i++) {
for (int j = 0; j < numbers.length; j++) {
if (Character.toString(p.charAt(i)).equals(numbers[j])) {
return true;
}
}
}
return false;
}
Und hier sind die Passwortstärke Kontrolleure:
if ((containsUppercase(password)) || (containsLowercase(password)) || (containsNumbers(password))) {
JOptionPane.showMessageDialog(null, "Your password strength is WEAK. You must enter another password");
passwordreenter = 0;
}
if ((containsUppercase(password) && (containsLowercase(password)) || (containsUppercase(password)) && (containsNumbers(password)) || (containsLowercase(password)) && (containsNumbers(password)))) {
passwordreenter = JOptionPane.showConfirmDialog(null, "Your password strength is MEDIUM. Would you like to enter another password anyway?");
System.out.println(passwordreenter);
}
if ((containsUppercase(password)) && (containsLowercase(password) && (containsNumbers(password)))) {
JOptionPane.showMessageDialog(null, "Your password strength is STRONG. The program will now close");
System.exit(0);
}
Wenn ich das Programm laufen, wie ich es gleich auf die richtige Passwort Stärke zu gehen, da jetzt es durch jedes einzelne geht if-Anweisung, wenn ich Geben Sie ein STRONG-Passwort ein
' "Passwort kann nur [...] 12 Zeichen lang"' - ' "Alpha1234 wäre STRONG"' - Um ... Wirklich? – David
Warum nicht eine Flagge bei jedem Tastendruckereignis für jede Taste auslösen. Angenommen, Sie haben 3 verschiedene Flaggen, die Sie erhöhen können. 1 Flagge erhaben = schwach, 2 Flaggen mittel, 3 Flaggen stark. – Radmation
Ich schlage vor, in "Passwort Entropy" zu suchen - Ihre Klassifizierungen sind alles andere als in Ordnung. Beschränken Sie außerdem niemals ein Passwort auf eine so kleine Zahl. –