Laden...

Wert für Binary-Objekt erstellen

Erstellt von Yheeky vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.060 Views
Y
Yheeky Themenstarter:in
200 Beiträge seit 2008
vor 13 Jahren
Wert für Binary-Objekt erstellen

Hi,

ich habe eine Tabelle in meiner MSSQL-Datenbank, in der ich die Benutzer meiner Seite speichern möchte. Ich habe unter anderem ein Passwort-Feld als Binary deklariert.
Ich möchte über eine MVC-Applikation nun gerne einen neuen Eintrag in der Tabelle erstellen. Das funktioniert soweit, allerdings weiss ich nicht, wie ich einen Binary-Wert in C# erstelle....kann mir da jemand weiterhelfen?

Danke udn Gruß,
Yheeky

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo Yheeky,

ein Binary ist im Prinzip ein byte Array, welches zb beim Serialisieren mit einem MemoryStream erstellen kannst.

Eingefügt wird das ganze als Parameter (in deinem Fall SqlParameter)

Viele Grüße
Lars

Y
Yheeky Themenstarter:in
200 Beiträge seit 2008
vor 13 Jahren

Hi,

ich habe mal folgende Zeilen versucht:

Benutzer user;

var tempPasswort = new ASCIIEncoding();
user.Passwort = new Binary(tempPasswort.GetBytes("DasIstEinTest"));

db.Benutzer.InsertOnSubmit(user);
db.SubmitChanges();

Ich bekomme aber leider folgende Fehlermeldung, bei db.SubmitChanges(); angezeigt:

Zeichenfolgen- oder Binärdaten würden abgeschnitten.
Die Anweisung wurde beendet.

Was mache ich falsch?

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo,

tempPasswort.GetBytes("DasIstEinTest")

gibt dir ein byte[] zurück, genau dieses byte[] solltest du auch in die Datenbank einfügen

oder welchen Datentyp hat das Propperty Passwort?
Hast du die Klasse Benutzer selbst erstellt oder ist diese generiert?

Viele Grüße
Lars

Y
Yheeky Themenstarter:in
200 Beiträge seit 2008
vor 13 Jahren

Bekomme leider immer noch die gleiche Fehlermeldung.
Hab nochmal in der Datenbanktabelle geschaut. Der Typ von Passwort steht auf "VARBINARY(MAX)". Muss ich da vielleicht was umstellen oder wie kann ich Passwörter sonst verschlüsselt in einer Tabelle ablegen?

2.223 Beiträge seit 2005
vor 13 Jahren

Die frage ist ja welchen Datentyp hat

user.Passwort?

Viele Grüße
Lars

Y
Yheeky Themenstarter:in
200 Beiträge seit 2008
vor 13 Jahren

Der Hint in VS sagt "Binary".

2.223 Beiträge seit 2005
vor 13 Jahren

hmm, das ist alles recht komisch, diese Codezeile

new Binary(tempPasswort.GetBytes("DasIstEinTest"))

würde ein Binary Data Objekt mit der Länge 13 erzeugen.

diese 13 Zeichen sollten doch in ein VarBinary(Max) reinpassen.

Da Passwort den datentyp Binary hat, hätte ich es auch mit deinem oben beschriebenen Code versucht, leider bringt das nicht das gewünschte Ergebnis.

Sorry, aktuell hätte ich keine Idee mehr.

außer noch einen kleinen Tip:
Passwörter speichert man eigentlich, nicht als Binary sondern eher als Hash, und die jeweiligen Hash werte bei der Anmeldung verglichen.

Viele Grüße
Lars

Y
Yheeky Themenstarter:in
200 Beiträge seit 2008
vor 13 Jahren

Ok, schade, dass du auch nicht weiter weisst. Aber dennoch danke für deine Bemühungen!
Wie richte ich denn einen Hash-Wert in der Datenbank ein? Also welchen Datentyp muss ich da einstellen?

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo,

ein Hash zb Md5 ist ein Textueller Wert mit einer bestimmten Länge.

Nimm einfach einen text Datentypen wie zb VarChar (Text wäre zu groß)

Viele Grüße
Lars