Passwort Generator Code Erweiterung

c_sidi90

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

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

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

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

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

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
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
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
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
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
Gaudimagspam Caesars Code entziffern in Java Java Basics - Anfänger-Themen 8
Lukasbsc Wie kann ich meinen Code optimieren? Java Basics - Anfänger-Themen 4
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
I Input/Output Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 3
T Main startet nicht bei vorgegebenen Code Java Basics - Anfänger-Themen 41
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
parrot Code entferneJedeZweiteZiffer Java Basics - Anfänger-Themen 6
G Code kürzen Java Basics - Anfänger-Themen 5
Bluedaishi Source Code Signieren Java Basics - Anfänger-Themen 22
L Best Practice Code Refactoring für Methoden mit fast gleicher Aufbau Java Basics - Anfänger-Themen 6
L Best Practice Code refactern Java Basics - Anfänger-Themen 30
G code kürzen Java Basics - Anfänger-Themen 16
A Code umschreiben Java Basics - Anfänger-Themen 6
Torsten.E JavaFX mit Visual Studio Code verwenden Java Basics - Anfänger-Themen 1
C Beispiel-Code mit Pair wird nicht compiliert. Java Basics - Anfänger-Themen 8
X Reverse algorithm engineering (Java code) Java Basics - Anfänger-Themen 6
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
S Bewertet meinen Code - Part 1 Java Basics - Anfänger-Themen 8
M Java Code Verständnis Java Basics - Anfänger-Themen 4
M Java Code Verständnis Java Basics - Anfänger-Themen 2
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Hierarchi im code darstellen Java Basics - Anfänger-Themen 11
S Struktogramm zu Code Java Basics - Anfänger-Themen 4
F Code kürzen Java Basics - Anfänger-Themen 9
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
S Hilfe bei meinem Code [Schleife]? Java Basics - Anfänger-Themen 5
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
J Array eintrag mit möglichst wenig code lösen Java Basics - Anfänger-Themen 16
N SelectionSort ; Code erläutern Java Basics - Anfänger-Themen 13
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
O I/O Code Gerüst vorgegeben Java Basics - Anfänger-Themen 30
R Dieser Code sagt mir nichts... Java Basics - Anfänger-Themen 4
C Klassendiagramm aus Java-Code entwickeln Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Anzeige


Oben