# Daten verschlüsselt ablegen in der Datenbank mit Hibernate



## SilentJ (11. Dez 2006)

Hallo,

da zumindest das Passwort eines Benutzers nicht im Klartext in einer Datenbank abgelegt werden sollte, stelle ich mir nun die Frage, wie ich am Besten diese Aufgabe angehe. Bisher bin ich auf dem Trichter, dass ich beim Login und beim Anlegen eines neuen Benutzers in meiner Datenbank nicht die Eingabe des Passworts, sondern einen mit RipeMD erzeugten Hashwert von 160 Bit in der Datenbank hinterlege. Weiterhin ist die Frage, wie stelle ich das mit Hibernate an? byte-Arrays kann ich mit mit type="binary" mappen, ist das korrekt?

Ansonsten, ist mein Vorgehen eher gut oder schlecht?

Michael


----------



## ZeHa (11. Dez 2006)

Naja, normalerweise müßte es doch gehen, daß Du den Wert einfach verschlüsselst, BEVOR Du irgendwas mit Hibernate machst. Das heißt, Du fragst das Paßwort einfach ab, und bevor Du überhaupt mit Deiner Datenbank arbeitest, erzeugst Du daraus den Hash-Wert. Die String-Klasse hat ja auch schon eine entsprechende .hashCode()-Funktion.


----------



## hupfdule (11. Dez 2006)

SilentJ hat gesagt.:
			
		

> byte-Arrays kann ich mit mit type="binary" mappen, ist das korrekt?


Hashs legt man in der Regel Ascii-kodiert ab. Kodiere sie mit base64 und du kannst sie direkt in der DB abspeichern.



> Ansonsten, ist mein Vorgehen eher gut oder schlecht?


Genau richtig. So handhabt das jedes halbwegs sinnvolle Programm.


----------



## hupfdule (11. Dez 2006)

ZeHa hat gesagt.:
			
		

> Naja, normalerweise müßte es doch gehen, daß Du den Wert einfach verschlüsselst, BEVOR Du irgendwas mit Hibernate machst. Das heißt, Du fragst das Paßwort einfach ab, und bevor Du überhaupt mit Deiner Datenbank arbeitest, erzeugst Du daraus den Hash-Wert.


Das hat er auch vor.


> Die String-Klasse hat ja auch schon eine entsprechende .hashCode()-Funktion.


Die Methode sollte jedoch auf keinen Fall für Passwörter verwendet werden. Wie genau die implementiert ist, weiß ich zwar nicht, aber es ist unwahrscheinlich, dass diese so sicher ist, wie SHA oder RipeMD.


----------



## ZeHa (11. Dez 2006)

Naja für mich hat sich das so angehört, als suche er direkt nach einer Hibernate-Funktion: _wie stelle ich das mit Hibernate an?_
Daher mein Vorschlag, das bereits vor dem ganzen DB-Kram zu erledigen.


----------



## SilentJ (11. Dez 2006)

Genau, die Verschlüsselung per Hash führe ich losgelöst von Hibernate durch, nur greife ich auf die Datenbank per Hibernate zu.


----------



## SilentJ (11. Dez 2006)

Und danke nochmal, hupfdule.


----------

