Passwort Generator Code Erweiterung

c_sidi90

Top Contributor
Nachdem ich gestern einige an Tipps von euch bekommen habe, habe ich mein Code umgeschrieben, der ist auch soweit in Ordnung. Nur jetzt liege ich vor dem Problem das ich verschiedene Kriterien für die Erfüllung des gewünschten Passwortes einbinden möchte.

z.B. soll geprüft werden ob das gewünschte Passwort auch die richtige Länge, Anzahl an Buchstaben usw. hat.

Dafür hab ich eine Boolische Variable erstellt. Mir fehlt jedoch der Ansatz für die implementierung der verschiedenen Abfragen.

Hier mein Code

Java:
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Generator {
	//Richtigkeitskriterien für die Erstellung des Passwortes
	static Boolean gueltig(String tPW){
		if (tPW==""){
			return false;
		} else {
			return true;
		}
		
	}
	//Methode die ein Char zurückliegert
	static char getASCIIZeichen(){
		int Zahl = 0;
        //Zufallsbuchstaben generieren
        while ((Zahl < 48) || 
                 (Zahl > 122) || 
                 ((Zahl >= 91) && (Zahl <= 96)) || 
                 ((Zahl >= 58) && (Zahl <= 64))) {
      	  Zahl = ((int)(Math.random() * 1000)) + 32;
        }
        return (char)Zahl;
	}
        
	public static void main (String[]args)throws IOException{
		//Benutzereingabe erzeugen
		InputStreamReader Wandler = new InputStreamReader(System.in);
		BufferedReader Eingabe = new BufferedReader (Wandler);
		String buchstabenString = "";
		String PW = "";
		//Variablen Deklaration  für die Benutzereingaben
		String laengeString="";
		int laenge=0;
		int buchstaben=0;
		//Deklaration der Variablen für die Buchstabengenerierung
        
          
          System.out.println ("Bitte geben Sie die gewünschte Passwortlaenge ein...");
          laengeString = Eingabe.readLine();
          
          System.out.println ("Bitte geben Sie die gewünschte Anzahl an Buchstaben ein");
          buchstabenString = Eingabe.readLine();
          
          
          laenge = Integer.parseInt(laengeString);
          buchstaben = Integer.parseInt(buchstabenString);
          //Beginn While-Schleife für die Rückgabe von Char
          while (gueltig(PW) == false){
        	  PW = "";
        	  //Solange PW < Benutzereingabe gewünschte laenge getASCIIZeichen();
              for (int i=1; i<=laenge; i++){
            	  PW = PW + getASCIIZeichen();
              }
        	  
          }
          System.out.println(PW);
        	  
		}
		
	}
 

c_sidi90

Top Contributor
P.S die Schleife [Java] while ((Zahl < 48) ||
(Zahl > 122) ||
((Zahl >= 91) && (Zahl <= 96)) ||
((Zahl >= 58) && (Zahl <= 64))) {
Zahl = ((int)(Math.random() * 1000)) + 32;
[/Java]
hat den Zweck das ich mir den ASCII Code angesehn habe und bemerkt habe das die ersten 32 Buchstaben nur Sonderzeichen sind, die ich im Passwort nicht ausgeworfen haben möchte, daher das +32. Die *1000 sind dafür gewählt, da es ja z.B für "a" auch das "A" gibt, darum hab ich die Zeichen verdoppelt.
 
M

Marcinek

Gast
Hallo,

wie ich bereits in mehreren Postings geschrieben habe auch hier:

Man wählt zufällige Zahlen aus einem Pool von möglichen Zahlen und nicht per zufall.

Das bedeutet:

Du machst dir eine Liste (in der Informatik via Array oder ArrayList):

A,B,C,a,b,c,1,2,3

Dann hast du ein Math.random() * array.lenght; Und tadaa es kommen nur die gwünschten Zeichen bei raus.

Durch Segmentbildung e.g. [0..2] = Großbuchstaben; ...

Kann man direkt zählen, wieviele Buchstaben, Zahlen in dem PW vorkommen.

Und was soll

(int)(Math.random() * 1000) => "ich habe die Zahlen verdoppelt?" bedeuten.

Das erzeugt eine Zufallszahl zwischen 0 und 1000 und wenn man da in die ascii tabelle schaut...:rtfm:

Gruß,

Martin
 
Zuletzt bearbeitet von einem Moderator:

c_sidi90

Top Contributor
Der Code Funktioniert ja, nur ich möchte jetzt anhand von IF-Anweisungen in der Variable Boolean gueltig(String tPW) die Kriterien für das Nichterfüllen des gewünschten Passwortes Abfragen und den Code nicht mit Arrays ausstatten was bei dieser Aufgabe unnötig ist.

Math.random()*1000 dient dafür, das ja jede Zufalls Zahl im ASCII ein Zeichen darstellt, würde ich die Zufallszahlen allerdings nur bis z.B. 500 wählen, sind nicht alle Zeichen dargestellt. Das meinte ich damit.

Nun bitte Hilfe zu meinem eigentlichen Problem und keine Vorschläge für die Code umschreibung da dieser so ja Funktioniuert und ich ihn gerne so beibehalten möchte.

Danke
 
M

Marcinek

Gast
Die Lösung zu deinem Problem habe ich ebenfalls skizziert.

Du musst bei jeder generierten Zahl checken zu welcher Klasse sie gehört.

if(zahl ist Buchstabe)
anzahlBuchstaben++


Das Alphabet geht bis 90 in der Ascii Tabelle alles dad rüber sind sonderzeichen und alles über 256 sind Erweiterte Asciizeichen, die in Deutschland nicht ohne weiteres auf der Tastatur einzugeben sind ^^
 

c_sidi90

Top Contributor
Kannst du mir das als Beispiel einmal oben in meinen Code einbetten, ich hab dort echt einen Hänger, also an der Stelle sollen die Abfragen ja geschrieben werden
Java:
    static Boolean gueltig(String tPW){
        if (tPW==""){
            return false;
        } else {
            return true;
        }
        
    }
das tPW=="" ist halt solange der String leer ist soll er ein ASCI Zeichen auswerfen, das ist klar aber die weiteren fehlen mir halt ;(
 
M

Marcinek

Gast
Also du checkst ob der String gültig ist und erzeugst dann in der for-Schleife einen gültigen String, da er über die minimale Länge Zufallsbuchstaben erzeugt.

Daher ist die Prüfung auf Gültigkeit hier egal.

Anosnsten müsste man sowas wie
Code:
        if (tPW=="" || tPW.lenght() < solllaenge ){ return false; }
machen.


Und weitere Kriterien mit
Code:
if() else if () else if()

Und würde die Länge oder Form nicht korrekt sein, dann würde er die while schleife nochmal durchlaufen und das PW auf ="" setzen ;) ==> Endlosschleife. (Nur wenn man das Kriterium der Länge hätte, was aber nach der for schleife immer erfüllt ist.)

Dein Ansatz ist höchst inperformant, da du solange ein PW raten lässt bis es deinen Ansprüchen genügt.

Bereits in dem anderen Thread wurde gezeigt, wie man das effizient machen kann.

Sprich man kann bei der Generierung schon darauf achten, dass die korrekte Form des PWs erzeugt wird.
 
Zuletzt bearbeitet von einem Moderator:
?

?!?!?

Gast
Übringens ... ich denke es sollte nicht
Java:
 if( tPW == "" )
heißen sondern :
Java:
 if ( tPW.equals("" )
.
 

c_sidi90

Top Contributor
Aber wenn ich jetzt z.B an die IF-Anweisung noch ||tPW<laenge eingebe, funktioniert da er die Variable laenge nicht zuordnen kann weil Sie weiter unten im Code gebraucht wird. Allerdings kann ich die IF-Kriterien ja auch nicht unten im Code schreiben da ich kein Rückgabe Wert bei Void benutzen kann. Weiss jemand wie ich das lösen kann? Also if(tPW=="" || tPW < laenge || tPW.contains usw.
 
M

Marcinek

Gast
Warum gehst du diesen komplizierten weg?

Du müsstest deiner Prüfmethode die Krierien schon mitteilen via Parameter oder Instanzvariablen.

Wieso stellst du bei der Generierung nicht sicher, dass

1) die Länge, die der User eingibt stimmt (Das machst du ohnehin schon, in deiner for schleife)
2) Von der gesamtlänge sollen nun X Buchstaben drin sein.

Beispiel:
Y = sollLänge
X = (X <= Y) Anzahl buchstaben
i = aktuelleLängeDesPW
a = anzahlBuchstaben.
Java:
for() {
     int buchstabeOderZahl = Randon[1 oder 0] // 1 Steht für Buchstabe)
      if((a < X && buchstabeOderZahl == 1) || Y -i + a - x  <= 0 ) {
          PW += getAscii();
         a++;
    } else {
      PW += Char.valueOf(Zufall 1..9);
    } 
}

Dann mischt man perZufall (Münzwurf) entweder eine Zahl oder ein Buchstaben rein.

Da muss man lediglich aufpassen, dass nicht nur zahlen kommen oder nicht nur buchstaben. Oder der String nicht zu lang wird.
 
Zuletzt bearbeitet von einem Moderator:

c_sidi90

Top Contributor
Klingt plausibel, danke für die Hilfestellung, das Problem ist das ich als Neuling meist automatisch die Komplizierteren Wege gehe, daher wollte ich eigentlich auch meinen Code beibehalten, da ich bei diesem wenigstens jeden Schritt nachvollziehen kann. Also gitb es die Möglichkeit wie ich es beschrieben habe die Kriterien oben abzufragen nicht? Auch wenns einfacher ist wie du schon sagst es direkt unten in der for schleife bei der Generierung zu überprüfen?
 
M

Marcinek

Gast
Klar gibt es diese Möglichkeiten es so zu machen, wie du es möchtest.

Wie das geht habe ich geschrieben. Welche Probleme das ergbit ebenfalls.

Gruß,

Marcinek
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JavaBeginner22 Passwort Generator Java Basics - Anfänger-Themen 2
T Passwort Generator Java Basics - Anfänger-Themen 2
M Passwort-Generator Java Basics - Anfänger-Themen 3
B Passwort generator Java Basics - Anfänger-Themen 7
L 4 stelliges Passwort aus bestimmten Zeichen. Java Basics - Anfänger-Themen 27
M Passwort erraten Java Basics - Anfänger-Themen 1
A Passwort erstellen Java Basics - Anfänger-Themen 3
H Passwort Brute Force rekursiv Java Basics - Anfänger-Themen 7
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
L Rekursiv gegebenes Passwort herausfinden. Java Basics - Anfänger-Themen 2
C Passwort abprüfen Java Basics - Anfänger-Themen 5
M Code nur für Cracks? Crack the Passwort Übung Java Basics - Anfänger-Themen 7
cpt.Tomato Scanner problem mit Passwort Login Java Basics - Anfänger-Themen 3
B Email versand - aber akzeptiert auch falscher Username und Passwort??? Java Basics - Anfänger-Themen 1
N Passwort Anfrage vor Programm start Java Basics - Anfänger-Themen 1
K Methoden Passwort Bestätigungsfeld mit Password vergleichen Java Basics - Anfänger-Themen 7
A Passwort System Java Basics - Anfänger-Themen 4
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
J Passwort überprüfen Java Basics - Anfänger-Themen 3
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
C Encrypted (passwort) Rar Datei entpacken Java Basics - Anfänger-Themen 42
Detox Passwort verschleiern Java Basics - Anfänger-Themen 4
A Erste Schritte Passwort an "Internetseite" übergeben. Java Basics - Anfänger-Themen 2
B Passwort zurücksetzen Java Basics - Anfänger-Themen 1
U Passwort verschlüsseln schlägt fehl Java Basics - Anfänger-Themen 3
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
Z User/passwort eingabe...Help! Java Basics - Anfänger-Themen 4
S Passwort Manager Java Basics - Anfänger-Themen 2
J Passwort Java Basics - Anfänger-Themen 4
A Passwort Schutz Java Basics - Anfänger-Themen 8
U Passwort auf JButton setzen. Java Basics - Anfänger-Themen 2
P Passwort Abfrage Java Basics - Anfänger-Themen 3
F Login Passwort-Vergleich Java Basics - Anfänger-Themen 12
K Methode Passwort generieren Java Basics - Anfänger-Themen 10
F OOP Textdatei zippen und mit Passwort sichern Java Basics - Anfänger-Themen 5
Benji0815 Java Passwort in Formular eingeben Java Basics - Anfänger-Themen 5
G Passwort verschluesselt speichern Java Basics - Anfänger-Themen 7
M Regular Expression - Passwort - aufeinanderfolgende Zeichen Java Basics - Anfänger-Themen 3
H Passwort einlesen funktioniert nicht wie gewünscht Java Basics - Anfänger-Themen 5
S Erster Versuch: Passwort erstellen Java Basics - Anfänger-Themen 3
S String Vergleich mit Passwort geht nur bei Zahlen ? Java Basics - Anfänger-Themen 7
S Vergleichen von verschlüsselten Passwort Java Basics - Anfänger-Themen 3
G Passwort vor unbefugtem Zugriff schützen Java Basics - Anfänger-Themen 7
D Passwort verschlüsseln mit MD5 Java Basics - Anfänger-Themen 30
P Passwort überprüfen mit regular Expression Java Basics - Anfänger-Themen 4
O Unsichtbares Passwort Java Basics - Anfänger-Themen 2
R Passwort Maskierung in der Konsole Java Basics - Anfänger-Themen 9
I Frame mit Passwort-Eingabe (Datenbank) Java Basics - Anfänger-Themen 6
V Passwort-String byteweise in eine Datei schreiben Java Basics - Anfänger-Themen 6
T Passwort nicht in URL übergeben Java Basics - Anfänger-Themen 5
B Benutzername und Passwort an Internetseite übergeben Java Basics - Anfänger-Themen 3
E Zig Zag Generator Java Basics - Anfänger-Themen 1
Trumbly OOP Vierstelligen 'Code-Generator' Java Basics - Anfänger-Themen 2
A Android-Lib: Sourcecode Generator mittels Annotation Processing Java Basics - Anfänger-Themen 0
P Password Generator - Fehler bei "keiner Eingabe" Java Basics - Anfänger-Themen 6
L Nummern Generator (mit do-while Schleife) Problem Java Basics - Anfänger-Themen 7
R ArrayList generator Java Basics - Anfänger-Themen 3
c_sidi90 Hilfe PW Generator Java Basics - Anfänger-Themen 12
Z Problem mit Lottozahlen Generator Java Basics - Anfänger-Themen 2
D XML to XSD Generator Java Basics - Anfänger-Themen 13
A Problem mit dem Zufallszahlen-Generator Java Basics - Anfänger-Themen 17
G strichcode-generator Java Basics - Anfänger-Themen 7
M Dienst- Generator Java Basics - Anfänger-Themen 13
B random number generator Java Basics - Anfänger-Themen 5
G zahlen generator Java Basics - Anfänger-Themen 4
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 3
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Connect-4-Code analysieren Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
T Fehlercode bei code der das Alter ausrechnet Java Basics - Anfänger-Themen 2
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
jhfjeh Strukturgramm in code Java Basics - Anfänger-Themen 11
D Tipps zum Code Java Basics - Anfänger-Themen 24
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
ohneInformatik; For Schleife. Was macht dieser Code?? Java Basics - Anfänger-Themen 5
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
Say Stelle in Code herausfinden, wie geht man vor? Java Basics - Anfänger-Themen 12
Say do-While Code Ausführung Java Basics - Anfänger-Themen 3
W Rückfrage zur Programmgestaltung (clean code) Java Basics - Anfänger-Themen 12
M intelliJ auf neuem PC, plötzlich kein Code Java Basics - Anfänger-Themen 3
Pinhg Sound in Greenfoot Code einbinden Java Basics - Anfänger-Themen 2
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
J Größter gemeinsamer Teiler: mein Code Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben