Passwort Manager

Java xyrse123

Bekanntes Mitglied
Hallo,
ich wollte ein Programm zum verwalten von Passwörtern mit einer grafischen Oberfläche machen. Dafür verwende ich ein Cardlayout mit 3 Panels:

1. Panel : Man legt einmalig ein Masterpasswort fest, was verschlüsselt in eine Datei geschrieben wird um es dann immer wieder zu laden.
2. Panel: Man meldet sich mit seinem Masterpasswort an, wenn es richtig ist kommt man zum dritten Panel.
3. Panel: JTable mit allen Passwörtern werden angezeigt und es können neue Passwörter angelegt werden und gelöscht werden.Die Passwörter werden zum Laden auch verschlüsselt in einer Datei gespeichert.
So sieht das dann aus:
Ort: Mein PC Passwort: Geheim
...

Java:
Masterpasswort m= new Masterpasswort("");

class MasterpasswortPanel extends JPanel { // Masterpasswort festlegen
      
        MasterpasswortPanel() {
                  
            JButton button = new JButton("Bestätigen");
            setPreferredSize(new Dimension(300,300));
            setBackground(Color.BLUE);
          
            JTextArea textfeld = new JTextArea(1, 20);
            textfeld.setText("Gebe hier dein MasterPasswort ein:");
            textfeld.setEditable(false);
            textfeld.setLineWrap(true);              
            textfeld.setWrapStyleWord(true);            
            JScrollPane scrollpane = new JScrollPane(textfeld);                    
            add(scrollpane);                                  
            add(pwRegestrierung); // PaswortFeld zum Eingeben
          
            button.addActionListener(new ActionListener() {  // Button zum Bestätigen
                public void actionPerformed(ActionEvent e) {  // des Passwortes
                      char[] zeichen = pwFeld.getPassword();
                      String passwort = new String(zeichen);
                                    
                          System.out.println("Passwort gesetzt");
                          m.setMasterpasswort(passwort); // Masterpasswort setzen
                        
                          System.out.println(m.getMasterpasswort());
                          cl.next(CardPanel);   // View mit Passwörtern wid gezeigt  
                      }
                });                   
            add(button);                                  
        }
    }

public class Masterpasswort {
String Masterpasswort;
  
    Masterpasswort(String Masterpasswort) {
        this.Masterpasswort=Masterpasswort;      
    }
  
    public String getMasterpasswort() {
        return Masterpasswort;
    }
  
    public void setMasterpasswort(String Masterpasswort) {
        this.Masterpasswort=Masterpasswort;
    }
}

Aber wenn ich auf den Button zum Bestätigen des Masterpasswortes drücke, wird kein Passwort gesetzt und mit
Code:
 System.out.println(m.getMasterpasswort());
bekomme ich einen leeren String zurück. Wieso ist der String dann leer, obwohl ich was eingegeben habe?

Wäre das so eine gute Vorgehensweise und wenigstens einigermaßen sicher?

Schonmal danke im Vorraus.
 

Java xyrse123

Bekanntes Mitglied
Was ist pwFeld?
Weiter oben schreibst du:
add(pwRegestrierung); // PaswortFeld zum Eingeben
Da bin ich mit den ganzen etwas ungünstigen Variablennamen durcheinnander gekommen. Das pwFeld ist für das Login in zweiten Panel und pwRegestrierung ist für das einmalige setzen des Masterpasswortes im ersten Panel.

Jetzt funktioniert es, danke.
Ist das ganze so den einigermaßen sicher? Man kann ja auch dann einfach die Datei mit dem Masterpasswort und den anderen Passwörtern löschen, was nicht wirklich optimal ist. Gibt es noch eine andere Möglichkeit als die Passwörter in einer Datei zuspeichern?
 

Thallius

Top Contributor
Du Must einfach beim speichern der weiteren Passwörter jedesmal das masterpasswort mit codieren bzw. hashen. Dann nützt es nichts die masterpasswort Datei zu löschen da man trotzdem nicht an die einzelnen Passwörter ran kommt

Gruss

Claus
 

Java xyrse123

Bekanntes Mitglied
Ja, aber die Passwörter sind dann doch trotzdem verloren.
Und wenn man das Masterswort hasht kann man es doch nicht wieder zurück entschlüsseln, oder gibt es da eine Möglichkeit?
 
Zuletzt bearbeitet:

Java xyrse123

Bekanntes Mitglied
Wie meinst du das mit der Rechteverwaltung? Ich benutze Windows, da kann man die Dateien doch so löschen, bei Linux braucht man ja rootrechte
 

Meniskusschaden

Top Contributor
Ich benutze Windows, da kann man die Dateien doch so löschen, bei Linux braucht man ja rootrechte
Auch unter Windows kann man nur die Dateien löschen, für die man die Berechtigung hat, sie zu löschen. Über die Rechteverwaltung kann man einstellen, welche das sein sollen (Rechtsklick auf den Ordner->Eigenschaften->Sicherheit). Es ist allerdings kein Vergnügen, dabei zwischen "Ändern" und "Löschen" zu unterscheiden und ich denke, es ist auch nur äußerst selten sinnvoll. In deinem Fall sehe ich keinen Nutzen darin. Ich würde unbefugte Personen ausschließen und bei befugten Personen im Wesentlichen höchstens zwischen "Anzeigen" und "Ändern" unterscheiden.
 

Java xyrse123

Bekanntes Mitglied
Hm okay, danke. Das Programm soll eigentlich auch nur für mich sein und ist eine gute Übung. Da ist es vielleicht ein bisschen übertrieben mit den ganzen "Sicherheitsvorkehrungen".
 

Java xyrse123

Bekanntes Mitglied
Ein Problem habe ich noch, jetzt ist auf einmal die Tabelle nicht ganz vollständig:

Java:
class PasswortTabelle extends JPanel {
       
        PasswortTabelle() {
            setPreferredSize(new Dimension(300,300));
            setBackground(Color.BLUE);           
               
            tabelle = new JTable(tb);               
            tb.addRowToEnd("Spalte1", "Test1"); // TableModel Reihen werden hinzugefügt
            tb.addRowToEnd("Spalte2", "Test1");
               
                JScrollPane scrollPane = new JScrollPane(tabelle);               
                add(scrollPane);
        }       
    }

PasswortManager() {
           
    f.setSize(300, 300); // Frame
    f.setTitle("Passwort Manager");           
    CardPanel.setLayout(cl);   //Cardlayout              
       
    if(m.getMasterpasswort().equals("")) { // nur wenn Masterpasswort noch nicht gesetzt kann man  M. eingeben 
    CardPanel.add(new MasterpasswortPanel()); 
    }   
    CardPanel.add(new PasswortLoginPanel()); // 2. Fenster Login mit Masterpasswort 
    CardPanel.add(new PasswortTabelle()); // 3.Fenster PasswortTabelle
    f.add(CardPanel);         
    f.setVisible(true);                                         
   
 /*Vorher habe ich die Tabelle so hinzugefügt, da hat es funktioniert, aber ich wollte die Tabelle in eine Klasse auslagern :
   CardPanel.add(new JScrollPane(tabelle));
*/
}
Die eine Spalte der Tabelle wird dann gar nicht gefüllt weil, sie nicht ganz vollständig angezeigt wird, nur wenn ich das Frame maximiere. Wie könnte ich das beheben?
 

Java xyrse123

Bekanntes Mitglied
Habe jetzt ein bisschen herumprobiert und mit
Code:
  setLayout(new GridLayout(1,1));
funktioniert es. Woran liegt das?
Und irgendwie ist das auch nicht optimal, weil ich noch weitere Buttons hinzufügen möchte.
 

Java xyrse123

Bekanntes Mitglied
Danke für den Tipp mit dem BoxLayout.
Warum werden so die Tabelle und der Button nebeneinnander gesetzt?
Java:
        JButton Beenden = new JButton("Beenden");
        JPanel TablePane = new JPanel();
        JPanel ButtonPane = new JPanel();
      
        PasswortTabelle() {
                setPreferredSize(new Dimension(300,300));                                
                TablePane.setLayout(new BoxLayout(TablePane, BoxLayout.PAGE_AXIS));
                TablePane.add(Box.createRigidArea(new Dimension(0,5)));
                ButtonPane.setLayout(new BoxLayout(ButtonPane, BoxLayout.LINE_AXIS));  
              
                tabelle = new JTable(tb);              
                TablePane.add(tabelle);
                ButtonPane.add(Beenden);
                                 
                add(TablePane,BorderLayout.CENTER);
                add(ButtonPane,BorderLayout.PAGE_END);                          
        }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Passwort Versuche speichern Allgemeine Java-Themen 8
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
F Best Practice Passwort Recovery - Schulbeispiel Allgemeine Java-Themen 4
D Passwort verschlüsseln - Wo Allgemeine Java-Themen 2
J Passwort Verschlüsselung hash Allgemeine Java-Themen 2
O verschlüsseltes Passwort ablegen Allgemeine Java-Themen 12
G Unix Passwort mit Java ändern? Allgemeine Java-Themen 3
OnDemand Passwort entschlüsseln Allgemeine Java-Themen 8
S Random Passwort für den User + Hashen Allgemeine Java-Themen 6
W Passwort Clientseitig sicher ablegen ohne Hash Allgemeine Java-Themen 2
DStrohma Passwort in Datei speichern - wie? Allgemeine Java-Themen 31
DStrohma Verschlüsselung: SALT aus Passwort generieren? Allgemeine Java-Themen 3
R Windows - User Passwort ändern Allgemeine Java-Themen 2
B "Verschlüsselung" mit Passwort (XOR bzw. Modulo) Allgemeine Java-Themen 7
S Erstellung einer verschlüsselten Passwort Datei Allgemeine Java-Themen 11
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
J TrueZip - Passwort bei Zipfile Allgemeine Java-Themen 13
I Passwort verschlüsseln Allgemeine Java-Themen 22
padde479 zip mit Passwort Allgemeine Java-Themen 2
H root-Passwort übergeben Allgemeine Java-Themen 28
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
G Blind-Datei (Passwort auslesen) Allgemeine Java-Themen 5
C Passwort sicher speichern Allgemeine Java-Themen 5
P Passwort lokal speichern Allgemeine Java-Themen 5
F Passwort hash Allgemeine Java-Themen 8
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
S .rar-Dateien ein Passwort als Parameter übergeben Allgemeine Java-Themen 5
J Passwort(String) ---> SecretKey(Spec) Allgemeine Java-Themen 6
T jxl Passwort Allgemeine Java-Themen 3
P URL mit htaccess in Explorer öffnen (ohne user-passwort) Allgemeine Java-Themen 6
B Passwort verwenden ohne dass es im Quelltext steht Allgemeine Java-Themen 24
E TextField/Passwort Allgemeine Java-Themen 5
F Java Passwort abfrage Allgemeine Java-Themen 2
D sicheres hardgecodetes passwort? Allgemeine Java-Themen 18
G Zip Datei - Passwort schützen Allgemeine Java-Themen 13
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
L Combit Relationship Manager Java-COM Brücke Allgemeine Java-Themen 1
M Security Manager für bestimmte Klassen/Classloader? Allgemeine Java-Themen 3
D Security Manager konfigurieren Allgemeine Java-Themen 2
C Eigenen Layout Manager schreiben Allgemeine Java-Themen 7
C Security Manager deaktivieren Allgemeine Java-Themen 2
D javaw.exe in task manager Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben