cam hat folgendes geschrieben : |
So wie du mir das aufgeschrieben hast, funktioniert es auch nicht  |
"funktioniert nicht" ist keine richtige Beschreibung: Wird ein Benutzer ohne richtiges Passwort akzeptiert, wird ein Benutzer trotz Passwort abgewiesen, wird die Schleife überhaupt nicht durchlaufen, oder was?
Außerdem verweigerst Du uns sämtliche Informationen darüber, woher dt.Rows kommen und wie sie aufgebaut sind. Erst dann ist eine genauere Antwort möglich.
Passwort-Verschlüsselung mit Hash
cam hat folgendes geschrieben : |
Könntest du mir denn evtl. einen Link geben oder zeigen, wie das mit den Hash-Werten geht? |
Nicht viel anders als mit einem "echten" Passwort: Der eingegebene Passwort-String wird als Hash-Wert verschlüsselt; zum eingegebenen Benutzernamen wird der Eintrag in der Login-DB gesucht; wenn die Werte gleich sind => Login; andernfalls => Cancel. Wenn der Benutzer sein Passwort ändert, wird es ebenfalls verschlüsselt und dieser Wert gespeichert. Vorteile: Außerhalb des Login-Formulars wird niemals das richtige Passwort verwendet; die Verschlüsselung ist nur in eine Richtung nötig.
Für das Verschlüsseln benutze ich die folgende Routine:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| using System.Security.Cryptography; using System.Text;
string passwordValue = GetMD5Hash(editPassword.Text + editUsername.Text);
string GetMD5Hash(string Input) { UnicodeEncoding enc = new UnicodeEncoding(); byte[] input = enc.GetBytes(enc.GetType().FullName + Input); MD5 md5 = new MD5CryptoServiceProvider(); byte[] value = md5.ComputeHash(input); return System.Convert.ToBase64String(value); } |
Diese Methode gehört zu einem "eigenen" Login-Form, das aber noch nicht so gut durchdacht ist, dass ich es auf
CodeProject veröffentlichen wollte. - Ein Hash-Wert ist um so sicherer, je länger der Input-String ist; deshalb verknüpfe ich ihn mit dem Klassennamen.
Jürgen