Passwortabfrage

GhostfaceChilla

Bekanntes Mitglied
Hallo Leute :)
Da ich bei google kein richtiges Ergebnis dazu gefunden habe, möchte ich einfach mal hier nachfragen.
Wie kann ich eine Passwortabfrage umsetzen?

Also wie:
- speicher ich ein Passwort sicher ab
- vergleiche ich 2 Passwörter am besten
- wo speicher ich das Passwort?(Keine Datenbank)

Vielen dank schonmal ;)

-GhostfaceChilla-
 

MrClave

Bekanntes Mitglied
- speicher ich ein Passwort sicher ab

Naja, gibt viele Algorithmen, um ein Passwort zu verschlüsseln.
Da es nichts Java spezifisches ist, kannst du auf Google suchen, und ggf. Algorithmen, die in anderen Sprachen geschrieben sind, übersetzen.

vergleiche ich 2 Passwörter am besten
Häh? Da es zwei Strings sind, wirst du wohl equals benutzen müssen :bahnhof:
Musst halt bedenken, dass du das eingebene Passwort vor dem Vergleich ebenfalls verschlüsselst, denn sonst vergleichst du ja unverschlüsselt mit verschlüsselt, was gerne immer fehlschlagen sollte.

wo speicher ich das Passwort?(Keine Datenbank)
Bleibt ja nicht viel über, oder?
Wird dann wohl in irgendeiner Datei stehen müssen. XML, Plaintext, whatever.
Du kannst auch Passwörter in ein Objekt schreiben, und dies serialisieren.
 

Barista

Top Contributor
Mir wurde mal beigebracht, dass man Passwörter nicht verschlüsseln, sondern nur einen Hash-Wert, zum Beispiel MD5Hash speichern soll.
Da kann man nicht auf die Passwörter zurück schließen, falls die Daten(Hashes) mal geklaut werden.
 

njans

Top Contributor
[TIPP]Kleine Anmerkung:
Hashfunktionen sind Einwegfunktionen, die generell schwache und starke Kollisionsresitenz erfüllen sollten. Das heißt, es so praktisch nicht mit annehmbaren Aufwand möglich sein, einen 2ten Input zu einem gegebenen Hashwert zu finden. Daher ist eine Verschlüsselung praktisch nicht nötig.[/TIPP]
 

ARadauer

Top Contributor
[TIPP]Kleine Anmerkung:
Hashfunktionen sind Einwegfunktionen, die generell schwache und starke Kollisionsresitenz erfüllen sollten. Das heißt, es so praktisch nicht mit annehmbaren Aufwand möglich sein, einen 2ten Input zu einem gegebenen Hashwert zu finden. Daher ist eine Verschlüsselung praktisch nicht nötig.[/TIPP]

sollten.. md5 hash meines master passworts würde ich nicht gerne hergeben...
 

GhostfaceChilla

Bekanntes Mitglied
Vielen danke Leute :)
Wollte mal fragen ob folgender Code wirklich schon ausreichend ist um einen Hashwert zu berechnen:
Java:
private byte[] getHash(){
        final String salt = "7H25Jbc89";
        MessageDigest md = null;
        try {
            md= MessageDigest.getInstance("SHA");
            md.update((password+salt).getBytes());
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(UserID.class.getName()).log(Level.SEVERE, null, ex);
        }
        return md.digest();
    }

-GhostfaceChilla-
 

Tobse

Top Contributor
Vielen danke Leute :)
Wollte mal fragen ob folgender Code wirklich schon ausreichend ist um einen Hashwert zu berechnen:
Java:
private byte[] getHash(){
        final String salt = "7H25Jbc89";
        MessageDigest md = null;
        try {
            md= MessageDigest.getInstance("SHA");
            md.update((password+salt).getBytes());
        } catch (NoSuchAlgorithmException ex) {
            Logger.getLogger(UserID.class.getName()).log(Level.SEVERE, null, ex);
        }
        return md.digest();
    }

-GhostfaceChilla-
Sollte. Aber generell macht man das mit dem Salt anders, stichwort Rainbowtable. Für jedes Passwort wird ein neuer Salt generiert und mit dem Hash abgespeichert. Unter Linux sieht das dann in etwa so aus:
Code:
salt$2a6cde1214
 

GhostfaceChilla

Bekanntes Mitglied
Ok danke ;)

Ich würde jetzt hingehen und einfach das Objekt in dem Benutzername und gehashtes Passwort liegen abspeichern.(Gibt es eine spezielle Dateieendung für sowas?)
Beim login würd ich dann dieses Objekt wieder laden und mit den Eingaben vergleichen. Funktionieren tut es mal, aber macht man das auch so?Oder gibt es eine "schönere" Art und Weis wie man da vorgeht?

-GhostfaceChilla-
 

Tobse

Top Contributor
Ok danke ;)

Ich würde jetzt hingehen und einfach das Objekt in dem Benutzername und gehashtes Passwort liegen abspeichern.(Gibt es eine spezielle Dateieendung für sowas?)
Beim login würd ich dann dieses Objekt wieder laden und mit den Eingaben vergleichen. Funktionieren tut es mal, aber macht man das auch so?Oder gibt es eine "schönere" Art und Weis wie man da vorgeht?

-GhostfaceChilla-

Das nennt sich serialisieren. Ist aber eher ungünstig, ich würde einfach ein Text-File nehmen:
Code:
Nutzername
salt$passworthash
 

Tobse

Top Contributor
Ich hatte mit serialisierung imemr das Problem, dass irgendwann die serialisierten Daten nichtmehr mit den Aktuellen Klassen kompatibel waren. Sprich: du willst ein Update herausgeben aber die neue Version kann die serialisierten daten nichtmehr lesen.
 

GhostfaceChilla

Bekanntes Mitglied
Ok, aber stehe mittlerweile wieder vor einem Problem...
Und zwar, wenn ich einen Benutzernamen und Passwort in einer Datei, z.B *.txt speicher und diese Datei bei meinem Login verwende um zu überprüfen ob die eingegebenen Daten stimmen, könnt man doch theoretisch einfach so in die Datei einen Benutzernamen undein beliebiges Passwort(als hash) speichern und könnte sich somit einloggen.Wenn ich aber eine serialisiertes Objekt speichern würde, könnte dies theoretisch nicht passieren oder?

-GhostfaceChilla-
 
Zuletzt bearbeitet:

Machareder

Bekanntes Mitglied
ich gebe zu, dass ich nur deinen letzten Beitrag gelesen habe.
Somit weiß ich nicht warum du so darauf besessen bist es in eine .txt-Datei zu speichern.
Benutze doch einfach eine Datenbank :D
H2 Database Engine
<- früher oder später musst du es über eine machen ;)
 

Tobse

Top Contributor
ich gebe zu, dass ich nur deinen letzten Beitrag gelesen habe.
Somit weiß ich nicht warum du so darauf besessen bist es in eine .txt-Datei zu speichern.
Benutze doch einfach eine Datenbank :D
H2 Database Engine
<- früher oder später musst du es über eine machen ;)

Auch das schützt nicht vor fremdzugriff. Ganz sicher bekommst du es eigentlich nicht ausser du verschlüsselst alle Daten mit dem Passwort und speicherst es nicht ab. Aber der Aufwand ist wohl etwas übertrieben. Allein wenn du die Datei nicht .txt sondern .dat nennst sollte 90% der probier-lustigen davon abhalten, sie überhaupt zu öffnen.
 

Ähnliche Java Themen

Neue Themen


Oben