Passwort-Checker

JavaBeginner22

Aktives Mitglied
Hallo miteinander, ich bin grade am programmieren an meinen Passwort-Checker Projekt mit JavaFx. Es gibt ein kleines Problem, und zwar habe ich einen Array für ein Gutes Passwort erstellt. Meiner Meinung nach soll ein gutes Passwort alle Groß und klein Buchstaben besitzen, und mindestens 8 zeichen lang sein. Nun wenn ich auf mein Analysen button drücke , und ich zu mein Passwort zahlen hinzufüge, wird dieses immernoch als gutes passwort gesehen, obwohl es keine Zahlen in den Array gibt, die gibt es Screenshot (22).pngnur in den großbuchstaben Array, somit wenn ich zbs zahlen hinzufüge soll es eigentlich als starkes passwort gesehen werden. Hier ist ein Bild von mein code
 

mihe7

Top Contributor
Bitte:
  1. Source -> Format (Alt+Shift+F) ausführen, da bekommt man ja Augenkrebs
  2. Im Forum Code-Tags verwenden (</> im Editor oben links)
 

Beispiel0

Mitglied
Bin jetzt zu faul um alle Zeichen aufzuschreiben, aber das sollte jeweils die Stärke zurückgeben:

Java:
public class PWCheck {
    char[] kleinbuchstaben = {'a', 'b', 'c'};
    char[] grossbuchstaben = {'A', 'B', 'C'};
    char[] zahlen = {'1', '2'};
    char[] sonder = {'.', ','};

    public int check(String pw) {
        int strangeness = 0;
        for (char ch : pw.toCharArray()) {
            int b = 1;
            if (contains(kleinbuchstaben, ch)) {
                strangeness |= b;
            }
            b <<= 1;
            if (contains(grossbuchstaben, ch)) {
                strangeness |= b;
            }
            b <<= 1;
            if (contains(zahlen, ch)) {
                strangeness |= b;
            }
            b <<= 1;
            if (contains(sonder, ch)) {
                strangeness |= b;
            }
        }
        return strangeness;
    }

    private boolean contains(char[] a, char b) {
        for (char ch : a) {
            if (b == ch) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(new PWCheck().check("51oiD,a")));
    }
}

Noch besser wären allerdings Maps....
 

JavaBeginner22

Aktives Mitglied
Bin jetzt zu faul um alle Zeichen aufzuschreiben, aber das sollte jeweils die Stärke zurückgeben:

Java:
public class PWCheck {
    char[] kleinbuchstaben = {'a', 'b', 'c'};
    char[] grossbuchstaben = {'A', 'B', 'C'};
    char[] zahlen = {'1', '2'};
    char[] sonder = {'.', ','};

    public int check(String pw) {
        int strangeness = 0;
        for (char ch : pw.toCharArray()) {
            int b = 1;
            if (contains(kleinbuchstaben, ch)) {
                strangeness |= b;
            }
            b <<= 1;
            if (contains(grossbuchstaben, ch)) {
                strangeness |= b;
            }
            b <<= 1;
            if (contains(zahlen, ch)) {
                strangeness |= b;
            }
            b <<= 1;
            if (contains(sonder, ch)) {
                strangeness |= b;
            }
        }
        return strangeness;
    }

    private boolean contains(char[] a, char b) {
        for (char ch : a) {
            if (b == ch) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(new PWCheck().check("51oiD,a")));
    }
}

Noch besser wären allerdings Maps....
könntest du mir vielleicht im Bezug auf meine Lösung sagen, warum es zu dieses Problem kommt?
 

mihe7

Top Contributor
Gut, wenn Du drüber nachdenkst, aber korrekt dürfte der Code nicht sein. Du hast eine IDE: wieso lässt Du die den Code nicht formatieren? Du hast ein Forum, das Code-Blöcke kennt: wieso nutzt Du einen externen Paste-Dienst?
 

Ähnliche Java Themen

Neue Themen


Oben