Passwort Generator

ThIwOl

Mitglied
Hallo Leute,

komme leider nicht weiter und bräuchte mal eure Hilfe.
Der Generator soll aus den 4 Arrays immer ein Zufallszeichen nehmen, der Methode generate() werden die 4 boolean-Werte übergeben um zu prüfen ob die Checkbox(für Kleinbuchstaben, Großbuchstaben, Zahlen oder Sonderzeichen) angeklickt sind.
Leider funktioniert die Ausgabe nicht so wie sie soll, ich weiß nicht wie die Abfrage einbauen soll die prüft ob die Checkbox angeklickt ist. Es gibt ja zu viele Möglichkeiten...

Java:
public class Generator {
	public String[] kleinbuchstaben = {"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 String[] großbuchstaben = {"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 String[] zahlen = {"1","2","3","4","5","6","7","8","9"};
	public String[] sonderzeichen = {",",";",".",":","-","_","!","§","$","%","&","/","(",")","[","]","{","}","=","?","\\","^","#","'"};
	
	public String generate(int l, boolean isKB, boolean isGB, boolean isZ, boolean isS) {
		String pw = "";
		
		for (int i = 0; i < l; i++) {
			int w = (int) (Math.random() * 4);

			if (w == 0) {
				pw += this.kleinbuchstabeGenerieren();
			} else if (w == 1) {
				pw += this.großbuchstabeGenerieren();
			} else if (w == 2) {
				pw += this.zahlGenerieren();
			} else if (w == 3) {
				pw += this.sonderzeichenGenerieren();
			}
		}
		
		return pw;
	}
	
	public String kleinbuchstabeGenerieren() {
		return kleinbuchstaben[(int) (Math.random() * (kleinbuchstaben.length - 1))];
	}
	
	public String großbuchstabeGenerieren() {
		return großbuchstaben[(int) (Math.random() * (großbuchstaben.length - 1))];
	}
	
	public String zahlGenerieren() {
		return zahlen[(int) (Math.random() * (zahlen.length - 1))];
	}
	
	public String sonderzeichenGenerieren() {
		return sonderzeichen[(int) (Math.random() * (sonderzeichen.length - 1))];
	}
}
 
Zuletzt bearbeitet:
Hallo ThIwOl,

verkette doch einfach die boolschen Werte mit der Zufallszahl.

Java:
if (w == 0 && isKB) {
    pw += this.kleinbuchstabeGenerieren();
} else if (w == 1 && isGB) {
    pw += this.großbuchstabeGenerieren();
} else if (w == 2 && isZ) {
    pw += this.zahlGenerieren();
} else if (w == 3 && isS) {
    pw += this.sonderzeichenGenerieren();
}

Und damit die Passwortlänge trotzdem richtig ist, ändere den Schleifenkopf in

Java:
while(pw.length() < l)

Test mittels
Java:
public static void main(String []args)
    {
    	Generator g = new Generator();
    	
    	System.out.println(g.generate(10, true, true, true, true));
    	System.out.println(g.generate(10, true, false, true, false));
    	System.out.println(g.generate(10, false, true, false, true));
    	System.out.println(g.generate(10, false, false, true, false));
    }

liefert mir das:

Code:
Bl8}#Udp46
ew4m4blbk7
P_^_?E_DAN
8117552517

Wichtig: Damit du nicht in eine Endlosschleife läuftst, muss noch vor der Schleife festgestellt werden, ob einer der angegebenen Werte true ist. Andernfalls kann er bei g.generate(10, false, false, false, false) nicht fertig werden.
 

Zurück
Oben