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
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
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?
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
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?
Die frage ist ja welchen Datentyp hat
user.Passwort?
Viele Grüße
Lars
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
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?
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