Programm hat Username/PW merken Option, wie anstellen?

tommey

Grünschnabel
Hi, ich bastel an einem Programm, welches sich auf einer Website einloggt und Daten
ausliest. Soweit, so gut.
Das Programm soll eine Option zum merken der LoginDaten bekommen, so ähnlich wie
es die Browser machen.

Wie stelle ich so etwas an? Meine Idee war jetzt, an den Benutzernamen sowie das Passwort ein Wort bestimmter Länge anzuhängen und dann zu verschlüsseln und in einer Datei zu speichern. Als Schlüssel hatte ich an so etwas wie Benutzername aus Windows + MAC-Adresse gedacht.
Mein eigentliches Problem ist, dass ich von den ganzen Algorithmen die es gibt, noch kein vernünftiges Tutorial gefunden hab, nach dem ich das anstellen kann.
 
Hmm ... warum willst du es denn unbedingt "unkenntlich" machen ? *Der Ausdruck "verschlüsseln" ist hier wohl etwas weit ausgeholt.*
Es würde reichen wenn du sie plain in eine Properties-Datei schreiben würdest. Außerdem ist die Verwendung der MAC und des User-Namens eine sehr inkonsistente Sache. Man sollte hier erstmal genau festlegen WIE das ganze "berechnet" werden soll. Es kann z.B. vorkommen das wenn du einfach mal EINE MAC auslesen willst plötzlich eine andere zurückkommt weil sich in der Liste etwas verändert hat. Daher sollte man , wenn man schon mit der MAC arbeitet , immer über ALLE NIC's gehen und sich überlegen wie man die einzelnen MAC's zusammen "rechnet". Das einfachste wäre wohl alle via XOR zusammenzufügen. Allerdings musst du auch drauf achten das du nur NIC's mit einer echten MAC verarbeitest. Unter Windows kann es leicht mal vorkommen das du entweder eine NPE bekommst oder die MAC aus irgendeinemen Grund länger ist. Daher sollte man diese ausfiltern.
Auch der User-Name ist keine gute Wahl da du vorher immer prüfen müsstest ob er eine gewisse Länge hat mit der du arbeiten willst. Es ist z.B. möglich einen User anzulegen dessen Namen nur aus einem Zeichen besteht. Wenn du jetzt komplizierte "Unkenntlichmachung" anwendest und dich dabei darauf verlässt das der User-Name immer mindestens x Zeichen lang ist kann dir sowas schnell zum Verhängnis werden.

So viel erstmal zum unnötige Unkenntlich machen. Wie gesagt : es reicht wenn du die Daten PLAIN speicherst.

Wie machst du das nun :
Du baust den ActionListener einfach soweit um das er beim Klick auf z.B. EINLOGGEN die Informationen aus der Eingabemaske vorher noch in ein Property-File schreibt bevor er die eigentliche HTTP-Arbeit verrichtet. Das sind vielleicht 5 Zeilen Code *wenn überhaupt*.
Beim erneuten Starten deiner Anwendung liest du dieses Property-File einfach wieder ein und füllst damit die Eingabemaske.
 
Super Danke schön :) eine echt hilfreiche Antwort, property File hab ich noch nicht gehört, aber da lese ich mich rein ;) Wenn ich dann noch fragen habe, melde ich mich nochmal.
Noch eine andere Frage, wie speichern denn die Browser die Benutzername/PW? Auch mit diesem PropertyFile?

Nochmal danke schön, super Forum
 
Entweder in einer Config-Datei *ein Property-File ist eine Config-Datei ... nur eben speziell auf Java-Properties bezogen* oder unter Windows in der Registry *ist in dem Sinne ein riesiges Config-File fürs gesamte System*. Natürlich hast du recht das qualitativ hochwertige Programm diese Daten nicht PLAIN , also Klartext , speichern sondern diese unkenntlich machen. Aber ich denke um dir die Grundlagen dafür anzueignen sollte es ausreichen erstmal die Daten im Klartext zu speichern. Später kannst du vor dem Speichern noch eine Methode bauen die halt die PLAIN-Daten unkenntlich macht *CIPHER* , aber das ist ein anderes Thema.
 
Huhu,

Solange niemand Zugriff auf deinen Rechner hat, kannst du solche Zugangsdaten auch als Klartext, wie von SPiKEe erwähnt, abspeichern.

Wenn man nur unter Windows arbeitet, bietet Windows die Möglichkeit eines "protected" storage.
Das Ganze funktioniert so ähnlich wie die Keychain Geschichte unter Mac OSX.

Windows ermöglicht es dir sensible Daten abzuspeichern - diese werden an dein Benutzerkonto gebunden.
Man kann also auf diese Daten nur zugreifen, wenn man mit dem korrekten Benutzernamen sowie dem korrekten Passwort in Windows eingloggt ist.

Java selbst bietet keinen direkten Support dafür, jedoch kann man mit JNI eine C++ DLL schreiben, welche all dies abwickelt.

Stichwort:
Funktion "CryptProtectData"

Siehe auch: http://msdn.microsoft.com/en-us/library/ms995355.aspx

Das ganze lässt sich, soweit ich weiß auch auf Domänen-User anwenden und wird in ähnlicher Weise auch gern in verschiedensten Anwendungen benutzt.

Auch Microsoft Office Outlook benutzt diese Methode um Emailpasswörter verschlüsselt abzulegen.

Der Einzige Nachteil ist jedoch, dass das Auslesen auch durch Schadprogramme möglich ist, sofern der Benutzer angemeldet ist.
 
Zurück