Passwort generieren - kleines Programm

fLooojava

Bekanntes Mitglied
Hi,

ich bin seit kurzer Zeit hier im Forum angemeldet und bisher war ich nur immer fleißig am mitlesen. Ich befinde mich gerade in der Lernphase von Java und bediene mich hiermit mit einem Buch über Java.

Ich habe heute aufgrund von Eigeninteresse ein kleines Programm, welches ein Passwortgenerator sein soll, entwickelt. ( ist ganz klein, aber dennoch lerne ich etwas =) )

Ich habe insgesamt 3 Klassen. In einer ist die Main-Methode die dann die Sache zum ausführen bringt. In der passwordLength Klasse kann per input eingegeben werden wieviel Zeichen das Passwort haben soll und in der codeGenerator Klasse befindet sich die Methode in der der zufällige Code erstellt wird.
Code:
Java:
public class getCode
{


	/**
	 * @param args
	 * @param nt 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		codeGenerator cG = new codeGenerator();

		cG.generateRC();
	}

}

Java:
import java.util.Scanner;


public class passwordLength
{

	public int getpwLength(){
		Scanner scanner = new Scanner(System.in);
		System.out.println("lenght of the new pw: ");
		String input = 	scanner.nextLine();
		int lengthint= Integer.parseInt(input);
		scanner.close();
		return lengthint;
	}

}

Java:
import java.util.Random;
import java.util.Scanner;

public class codeGenerator
{

	public void generateRC(){
	int i = 1;
	passwordLength pwlength = new passwordLength();
	int length = pwlength.getpwLength();
	char[] chars = "abcdefghijklmnopqrstuvwxyz2131994".toCharArray();
	StringBuilder stringbuilder = new StringBuilder();
	Random random = new Random();
	while(i<=length){
	    char c = chars[random.nextInt(chars.length)];
	    stringbuilder.append(c);
		i = i+1;
	}

	String code = stringbuilder.toString();
	System.out.println("new password: " +"'" +code + "'");
}
}

Meine Frage nun: Gibt es hier Verbesserungsmöglichkeiten, oder hättet ihr es auch so programmiert? :idea:

Danke für eure Hilfe - Ich freue mich über jeden Verbesserungsvorschlag von euch! ;)

flo
 
Zuletzt bearbeitet:

MR_UNIX

Bekanntes Mitglied
Kann man in meinen Augen nicht viel daran aussetzen außer, dass eine eigene Klasse für die Länge des Passworts sinnlos ist, es reicht ein Attribut in der Generator Klasse.
Weiterhin solltest du im Hinblick auf deine Namensgebung für die Klassen mal einen Blick auf die Java Code Conventions werfen!

Hoffe, ich konnte helfen :)
 

fLooojava

Bekanntes Mitglied
Hallo MR_Unix,

danke dir für deine Meldung.

Ja da hast du recht, da könnte ich die passwordLength Klasse weglassen, die ist eher sinnlos so wie es jetzt ist. Die Namensgebung ist mir leider untergegangen, danke für den Hinweis! Natürlich sollten die Klassen immer mit einem Großbuchstaben anfangen. ;)



Ich hab's kurz geändert - So sollte es in Ordnung sein oder?


Java:
import java.util.Scanner;


public class CodeGenerator
{


	/**
	 * @param args
	 * @param nt 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.println("lenght of the new pw: ");
		String input = 	scanner.nextLine();
		int length= Integer.parseInt(input);
		scanner.close();
		
		CreatePassword createpw= new CreatePassword();
		createpw.generateRC(length);
	}

}


Java:
import java.util.Random;


public class CreatePassword
{

	public void generateRC(int length){
	int i = 1;
	//passwordLength pwlength = new passwordLength();
	//int length = pwlength.getpwLength();
	char[] chars = "abcdefghijklmnopqrstuvwxyz2131994".toCharArray();
	StringBuilder stringbuilder = new StringBuilder();
	Random random = new Random();
	while(i<=length){
	    char c = chars[random.nextInt(chars.length)];
	    stringbuilder.append(c);
		i = i+1;
	}

	String code = stringbuilder.toString();
	System.out.println("new password: " +"'" +code + "'");
}
}

Danke dir MR_UNIX ;).

flo
 
Zuletzt bearbeitet:

MR_UNIX

Bekanntes Mitglied
Gefällt mir schon viel besser. Spontan fällt mir kein Verbesserungsvorschlag ein. Du könntest allerdings in dein Array der verfügbaren Zeichen vielleicht noch ein paar Sonderzeichen aufnehmen, um noch bessere Passwörter zu erzeugen. Falls ich ihn finde, kann ich dir auch mal per PN falls du Interesse hast den Code meines Passwort-Generators (mit GUI) zusenden, den ich vor einer gefühlten Ewigkeit mal gebastelt habe!

MFG :)
 

fLooojava

Bekanntes Mitglied
Hi,

ich habe im neuen Jahr mal ein wenig weiterprogrammiert und es ist auch deutlich was an Code dazugekommen. Ich habe das komplette Projekt nun in eine GUI verpackt und diverse Funktionen eingebaut. Natürlich ist es noch nicht ganz vollendet, aber es gibt immer wieder Erweiterungen.

Es würde mich sehr freuen, wenn ich verschiedene Meinungen bezüglich meinem Code bekomme um so aus Fehlern zu lernen. Wird alles so programmiert, wie ich es programmiert habe? Gibt es Verbesserungsmöglichkeiten? Gibt es eine Stelle im Code die auf garkeinen Fall so gemacht wird?


Java:
public class CodeGenerator
{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GUIGen guigen= new GUIGen();
	}

}
Java:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
import java.util.Random;


public class CreatePassword
{


	
	
	public String generateRandomCode(int length){
	int i = 1;

	char[] chars = "abcdefghijklmnopqrstuvwxyz2131994".toCharArray();
	StringBuilder stringbuilder = new StringBuilder();
	Random random = new Random();

	while(i<=length){
	    char c = chars[random.nextInt(chars.length)];
	    stringbuilder.append(c);
		i = i+1;
	}
	
	
	
	String code = stringbuilder.toString();       
	return code;

}


}
Java:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;


public class GUIGen extends JFrame 
{
	private JTextArea textarea = new JTextArea(5,25);
	//private JLabel jlblStatus = new JLabel();
	private int length;
	public GUIGen ()
	   {
		   JFrame frame = new JFrame("password generator");
	       frame.setSize(600,200);
	      
	       frame.setLocation(300,300);
	       frame.setResizable(false);
	       FlowLayout flowlayout = new FlowLayout();
	       frame.setLayout(flowlayout);
	       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	       JPanel panel = new JPanel();
	       JLabel lblpw = new JLabel("length of your password : ");
	       JLabel lblcountpw = new JLabel ("passwords to create : ");
	       JPanel panel1 = new JPanel();

           
	        final JTextField tfieldlength = new JTextField();
	        tfieldlength.setColumns(2);
	        JTextField tfieldcount = new JTextField();
	        tfieldcount.setColumns(2);
	       // private JTextArea textarea = new JTextArea(5,25);
	        JScrollPane sp = new JScrollPane(textarea);
	        textarea.setBackground(Color.LIGHT_GRAY);
	        textarea.setEditable(false);
	        
	        textarea.setLineWrap(true);
	        textarea.setWrapStyleWord(true);
	        
	        final JTextArea textareaedit = new JTextArea(5,25);
	        JScrollPane spe = new JScrollPane(textareaedit);

	        textareaedit.setEditable(true);
	        textarea.setLineWrap(true);
	        textarea.setWrapStyleWord(true);
	        

	       final JButton btngenpw = new JButton("generate pw");
	       
	       // ComboBox
	       String comboBoxlist[] = {"1","2","3",
	    		   					"4","5","6",
	    		   					"7","8","9",
	       							"10"};
	       final JComboBox dropdownlist = new JComboBox(comboBoxlist);
	       
	      
	       
	       // menubar

	       	JMenuBar menubar = new JMenuBar();
	       	menubar.setBackground(Color.getHSBColor(60,60, 60));
	        JMenu file = new JMenu ("File");
	        
	        JMenu help = new JMenu ("Help");
	        menubar.add(file);
	        menubar.add(help);
	        
	        JMenuItem save = new JMenuItem("Save");
	        save.setBackground(Color.getHSBColor(60,60, 60));
	        JMenuItem print = new JMenuItem("Print");
	        print.setBackground(Color.getHSBColor(60,60, 60));
	        JMenuItem quit = new JMenuItem("Quit");
	        quit.setBackground(Color.getHSBColor(60,60, 60));
	        JMenuItem about = new JMenuItem("About");
	        about.setBackground(Color.getHSBColor(60,60, 60));
	        
	        file.add(save);
	        file.add(print);
	        file.add(quit);
	        help.add(about);
	        
	        frame.setJMenuBar(menubar);
	       //
	       
	       panel.add(lblcountpw);
	       panel.add(dropdownlist);
	       panel.add(lblpw);
	       panel.add(tfieldlength);
	       
	       panel.add(btngenpw);

	       
	       frame.add(panel);
	       frame.add(panel1);

	       frame.add(sp);
	       frame.add(spe);
	     //  frame.add(jlblStatus);
	  
	       frame.setVisible(true);
	       
	       quit.addActionListener ( new ActionListener(){
	    	  public void actionPerformed(ActionEvent e){
	    		  System.exit(0);
	    	  }
	    	   
	       });
	       
	       save.addActionListener(new ActionListener(){
	    	   
	       
	    	   public void actionPerformed(ActionEvent e){
	    		   save();
	    	   
	       }
	       });
	       about.addActionListener ( new ActionListener(){
	    	   public void actionPerformed(ActionEvent e){
	    		   JFrame frame = new JFrame("About");
	    		  
	    		   JOptionPane aboutmsg = new JOptionPane();
	    		   aboutmsg.showMessageDialog(frame,"V0.1 \n It's possibly to create a random password. \n +implemented a menubar \n \n proposed updates:\n" +
	    		   		"-add some variable informations next to the password (for different accounts)\n" +
	    		   		"-more than one password with one click\n" +
	    		   		"-implement a save function\n" +
	    		   		"-implement a print function");	    
	    		  
	    	   }
	       });
	       

	       btngenpw.addActionListener (new ActionListener() {
  				@Override
  				public void actionPerformed(ActionEvent e) {
  					// TODO Auto-generated method stub
  					// System.out.println(e);
  					//System.out.println(dropdownlist.getSelectedIndex());
  					
  					int count = dropdownlist.getSelectedIndex()+1;
  		            String input = tfieldlength.getText();
  		 	        int length = Integer.parseInt(input);
  		 	      
  		 	       CreatePassword createpw= new CreatePassword();
  		 	       int i=1;
  		 	       
  		 	       textarea.setText("");
  		 	       textareaedit.setText("");
  		 	       do{
  		 	       textareaedit.append("password "+i+" is for: \n");
  		 	       textareaedit.setCaretPosition(0);
  		 		   textarea.append("Your new password:\n"+createpw.generateRandomCode(length)+"\n"+"----------------------------------\n"+"Created from: "+ System.getProperty("user.name")+"\n"+"Operating System: "+ System.getProperty("os.name")+"\n\n");
  		 		   textarea.setCaretPosition(0);
  		 		   i++;
  		 	       //System.out.println("laufende variable"+i);
  		 	       //System.out.println("dropdown ausgewählt: " +count);
  		 	       }while(i<=count);
  		 		
  		 	       }
  			
  			
  		 });
	       
	   }
	  private JFileChooser jFileChooser = new JFileChooser();
	  private void save(){
	    if (jFileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION){
	      save(jFileChooser.getSelectedFile());
	    }
	  }
	 
	  private void save(File file){
	    try{
	      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));
	      byte []  b = (textarea.getText()).getBytes();
	      
	      out.write(b, 0, b.length);
	      out.close();
	 
	      //jlblStatus.setText(file.getName() + " saved ");
	    }
	 
	    catch (IOException ex){
	      //jlblStatus.setText("Error saving " + file.getName());
	    }
	       
	       
	  }
	      
	    
	  
	}

passwordgen1nolz3bg12y.png

Wäre sehr cool! ;)

Schöne Grüße! :)
 
Zuletzt bearbeitet:

JavaMeetsBlueJ

Bekanntes Mitglied
Ich hab gerade deinen Code mal durchgelesen und noch einen kleinen Verbesserungsvorschlag, es sei denn ihch hab den String der Zeile nicht richtig verstanden :)

Ist es nicht sinnvoller, das Chararray wie folgt zu füllen?

Java:
 char[] chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz000111222333444555666777888999".toCharArray();

Liebe Grüße
 

fLooojava

Bekanntes Mitglied
Sinvoller wäre es aufjedenfall, das ändere ich dann auch noch. Aber prinzipiell vom Code - passt alles? Oder gibt's irgendwo Sachen wo anderst programmiert werden?

lg
 

fLooojava

Bekanntes Mitglied
Ich habe bereits eine Speicherfunktion, die speichert bei jeder Ausführung. Ist jedoch nicht dass, was ich dann wirklich möchte.

Wegen?
 

fLooojava

Bekanntes Mitglied
Naja, es ist quasi ein Entwurfsmuster, um anschließend das Projekt zu vergrößern, beliebige Komponente zu verändern. Sprich dass fehlt bei mir komplett? Bei mir ist eher alles "durcheinanender"?
 

JavaMeetsBlueJ

Bekanntes Mitglied
Guck dir an, was Interfaces sind und was für Möglichkeiten damit hat. Wenn du das verstanden hast, versuch das Entwurfsmuster erstmal ohne Gui anzuwenden. Wenn das dann sitzt kannst du dich mal nach dem Interface Observer und der Klasse Observable erkundigen, wobei hier die Meinungen auch auseinandergehen ;-)

[TIPP]Das dauert eigentlich nicht allzu lange, das System nachzuvollziehen :) poste doch einfach mal deinen Passwortgenerator mit MVC Pattern. Das ist eigentlich ein perfektes Beispiel, weil sich der Code bei dem Programm ja echt in Grenzen hält. Viel Erfolg dabei ;-)[/TIPP]
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Methode Passwort generieren Java Basics - Anfänger-Themen 10
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
JavaBeginner22 Passwort Generator Java Basics - Anfänger-Themen 2
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
T Passwort Generator Java Basics - Anfänger-Themen 2
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
Z User/passwort eingabe...Help! Java Basics - Anfänger-Themen 4
M Passwort-Generator Java Basics - Anfänger-Themen 3
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
c_sidi90 Passwort Generator Code Erweiterung Java Basics - Anfänger-Themen 12
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
B Passwort generator Java Basics - Anfänger-Themen 7
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
M Zufallszahl generieren mit einer linken und rechten Grenze Java Basics - Anfänger-Themen 3
JavaBeginner22 Java 2 Zufalls zahlen generieren. Java Basics - Anfänger-Themen 11
Marlena Bauer IBAN generieren (Deutschland) aus Abfrage von BLZ und Kontonummer? Java Basics - Anfänger-Themen 31
H Zufallszahlen generieren Java Basics - Anfänger-Themen 5
S Personalnummer automatisch generieren Java Basics - Anfänger-Themen 11
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
Gaudimagspam Nummern generieren Array Java Basics - Anfänger-Themen 4
W Erste Schritte Ein Spielfeld aufbauen/generieren Java Basics - Anfänger-Themen 1
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S Aus gleichverteilte Zufallszahlen normalverteilte Zufallszahlen generieren ? Java Basics - Anfänger-Themen 1
G Generieren neuer ID Java Basics - Anfänger-Themen 21
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
SchmidiMC Methoden Random in Methode neu generieren lassen Java Basics - Anfänger-Themen 1
3 Zufalls-Zahlen aus ArrayList generieren & auslesen Java Basics - Anfänger-Themen 6
T Hash von doubles generieren Java Basics - Anfänger-Themen 5
I String teilen und zwei Wörter generieren Java Basics - Anfänger-Themen 1
D Methoden Listen generieren Java Basics - Anfänger-Themen 4
T Javadoc in Eclipse generieren Java Basics - Anfänger-Themen 1
S JLabels generieren lassen Java Basics - Anfänger-Themen 1
1 String zu int generieren Java Basics - Anfänger-Themen 7
F Vererbung Sonnensystem mit Planeten generieren Java Basics - Anfänger-Themen 11
B Erste Schritte Möglichkeiten generieren Java Basics - Anfänger-Themen 25
I Eindeutige Stringvariablen in Schleife generieren Java Basics - Anfänger-Themen 4
S Gerade bzw. Ungerade Zufallszahl generieren Java Basics - Anfänger-Themen 5
K Java source code generieren Java Basics - Anfänger-Themen 5
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
J Formular generieren Java Basics - Anfänger-Themen 7
K Wie kann ich aus jar Dateien wieder normale Klassen generieren? Java Basics - Anfänger-Themen 7
R mit GregorianCalendar Datum generieren Java Basics - Anfänger-Themen 3
P Zufallszahlen fuer Lotto generieren Java Basics - Anfänger-Themen 28
M For-Schleifen dynamisch generieren? Java Basics - Anfänger-Themen 10
G HTML Seite generieren Java Basics - Anfänger-Themen 2
E Buttons in Android generieren? Java Basics - Anfänger-Themen 4
H HTML Code generieren Java Basics - Anfänger-Themen 9
Houly Integer Zahlen generieren Java Basics - Anfänger-Themen 11
T Zeichenkette generieren lassen Java Basics - Anfänger-Themen 6
A Zufallszahlen generieren Java Basics - Anfänger-Themen 2
HaukeG Java Klasse generieren Java Basics - Anfänger-Themen 3
M Javadoc generieren Java Basics - Anfänger-Themen 4
F sudoku generieren Java Basics - Anfänger-Themen 16
G zufällige zahlen von x bis y generieren Java Basics - Anfänger-Themen 5
G FileOutputStream generieren Java Basics - Anfänger-Themen 2
C 10 zeichen password generieren Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben