Byte[] in SQL Datenbank speichern und auslesen

A

awaiK

Hallo,

ich bin dabei ein Login Formular für eine Anwendung zu schreiben. Die Passwörter möchte ich mit der Klasse Rfc2898DeriveBytes hashen und in der Datenbank abspeichern. Als Datenbank wird ein SQL Server 2005 verwendet.

Die Methode GetBytes() bzw. die Eigenschaft Salt gibt mir den Hash und den Salt in Form eines Byte Arrays zurück. Ich weiß aber nicht welchene Datentyp ich in der Tabelle verwenden muss um diese Arrays zu speichern. Das konvertieren in int oder long bringt mich leider auch nicht weiter, da das Byte Array zu groß ist.

Ich hoffe ihr könnt mir helfen. Vielen Dank im vorauß.

EDIT: Außerdem kann man mit der Klasse direkt in einem Rutsch das Ganze iterieren.
 
Zuletzt bearbeitet von einem Moderator:
Hallo awaik,

innerhalb des SQL-Servers bieten sich dafür "binary" und "varbinary" an.
Wenn du immer die gleiche Länge für die Werte hast würde ich binary in der entsprechenden Länge definieren und fertig ist. Sollten sie sich unterscheiden wird dir wohl nichts anderes übrig bleiben als varbinary(MAX) zu verwenden.

Warum verwendest du eigentlich Rfc2898DeriveBytes? Das ist ja keine eigentliche Hashfunktion, sondern ein Schlüsselgenerator.
Reicht eine einfache Hashfunktion wie aus der SHA-Familie nicht? Bei denen hättest du immer eine feste Länge der Ausgabe.
 
Hi,

vielen Dank für deine Antwort, werde es sofort umsetzen.

Vermutlich würde ein MD5 oder SHA Hash reichen, doch ich möchte einen Salt benutzen, darum verwende ich diese Klasse. Ich kann der GetBytes Methode einden Wert übergeben, welcher bestimmt wie groß der zurückgegebene Schlüssel ist. D.h eine feste Länge ist ebenfalls gegeben.
 
Hallo calvin65,

das speichern des Byte Arrays scheint zu funktionieren.
Leider stehe ich jetzt vor dem Problem dieses Array wieder auszulesen, bisher habe ich SqlDataReader dafür benutzt. Doch dieser scheint keine passende Methode anzubieten um die Daten wieder auszulesen.

Kannst du mir da eine Möglichkeit nennen?
 
Zurück