Passwörter sicher speichern

damianek2

Mitglied
Hallo Leute,

für mein kleines Projekt, brauche ich eine Login-Möglichkeit (mit Account-Erstellung, Usernamen und Passwörtern). Es funktioniert alles soweit wie ich es benötige, nun aber stellt sich eine Frage wie ich am besten die Passwörter sichern soll.
Ich hatte bereits einen funktionierenden Encrypter sowie Decrypter, jedoch ist es ja recht unsicher.
Mit der Hash-Methode kenn ich mich nicht wirklich aus und daher auch mein Thread hier. Kann mir jemand helfen, vielleicht ein paar Quellen oder sonstiges angeben wo ich es mir genau anschauen kann, wie und warum ich was machen soll, da ich komplett planlos bin, wo ich eben anfangen soll, was die Hash-Methode angeht? Was macht diese, was brauche ich dafür bzw. was hab ich dann am Ende; eine Datei mit einem Hash-Code oder sowas?😳
Ein paar Schlagwörter o.ä. wären nicht schlecht.

Danke schon mal für die Antworten.
 
Zuletzt bearbeitet:
Passwörter sichern soll
Das kommt SEHR darauf an, was du darunter verstehst😉

Ein Password ist immer nur so sicher, wie es der Benutzer macht😀

Also, wenn ich, IMMER das Passwort "123345" wähle, ist das natürlich per se unsicher, weil es mit einem Programm innerhalb von Sekunden geknackt werden kann. Hier ist Vertrauen in den Dienstleister erforderlich, weil ein Benutzer nicht weiss, ob das Passwort im Klartext oder mit einem gesalzenen Hash abgespeichert wird. Und wenn ein Dieb Zugriff auf die DB bekommt,...

Die übliche Vorgehensweise ist, NICHT "12345" zu speichern, sondern aus dem Text einen Hashwert zu errechnen:
Beispiel sha-512("12345")="3627909a29c31381a071ec27f7c9ca97726182aed29a7ddd2e54353322cfb30abb9e3a6df2ac2c20fe23436311d678564d0c8d305930575f60e2d3d048184d79"
Eine Hashfunktion garantiert, das zu jedem Text ein Hashwert fester Länge berechnet wird, der NICHT zurückgerechnet werden kann. Also ist es nicht möglich aus dem Hash wieder das Passwort zu bekommen.
Dieses wird üblicherweise mit einem Salt kombiniert, damit nicht jedes Passwort auf denselben Hash abgebildet wird.

Wenn also der Benutzer nach seinem Passwort gefragt wird, errechnet der Rechner wieder den Hash und vergleicht ihn mit dem abgespeicherten und lässt den Benutzer nur rein, wenn beide übereinstimmen.

Bleibt noch als Risiko der Passwort-Übertragung an das Programm. Dieses sollte nach Möglichkeit NICHT im Klartext übertragen werden, da abfangbar. Hier gibt es verschiedene Möglichkeiten und SSL ist wohl am Gebräuchlichsten.

Du siehst, dass es hier viele Facetten gibt, die du beachten solltest. Aber wichtig ist immer, das du KEINE Passwörter im Klartext speicherst.

Hier mal mein Encoder, der MD5-Hashes (ohne Salt) generiert, wobei MD5 nicht mehr benutzt werden sollte. Wobei das Passwort von alice oder bob schon gesalzen sind, weil der Benutzername davor genommen wird.

Java:
public class Encoder {
	private static Logger logger = Logger.getLogger(Encoder.class);

	public static String encrypt(String plaintext, String algorithm) {
		MessageDigest md = null;

		try {
			md = MessageDigest.getInstance(algorithm);
			md.update(plaintext.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e) {
			logger.warn(e);
			return null;
		} catch (NoSuchAlgorithmException e) {
			logger.warn(e);
			return null;
		}
		String x = new BigInteger(1, md.digest()).toString(16);
		return x;
	}

	public static void main(String[] args) {
		System.out.println("admin:" + Encoder.encrypt("admin", "MD5"));
		System.out.println("alice:" + Encoder.encrypt("alicealice", "MD5"));
		System.out.println("bob:" + Encoder.encrypt("bobbob", "MD5"));
	}
}
 
Zuletzt bearbeitet:

Zurück
Oben