EF Code First-Verschlüsseln/Entschlüsseln Password-Eigenschaft

Ich habe das Modell wie folgt:

public class User 
{
    private string password;
    public string Password
    {
        get { return Decrypt(password); }
        set { password = Encrypt(value); }
    }
}

Möchte ich vom Benutzer-code zu verwenden, legen Sie Sie einfach und wählen Sie Kennwort leicht und sehen in Klartext und wollen, dass die Logik-Schicht zu behandeln, die Verschlüsselung und die Entschlüsselung.

Aber bei der Auswahl, EF set die value wieder, so dass die verschlüsselte Passwort bekommen aus der Datenbank, verschlüsselt Sie wieder für mich zu bekommen, von der client-code was ist ein problem. Ich kann auch nicht unterscheiden zwischen einer Insert und Select zu setzen-Bedingungen.

Kann ich sehr gut tun:

//Insert
user.Password = Encrypt("123"); //Encrypt or Hash does not matter
context.Users.Add(user);

//Select
var hashedpassword = context.Users.Find(1).Select(u => u.Password).Single();
var unhashed = Decrypt(hashedpassword);

Stattdessen würde ich mag es nicht ersichtlich sein, aus dem client-code:

//Insert
user.Password = "123"; //Inserts encrypted password in database
context.Users.Add(user);

//Select
var cleartextpassword = context.Users.Find(1).Select(u => u.Password).Single();

Hoffe, ich konnte das problem erklären und jemand kann mir die richtige Richtung. Wenn es überhaupt möglich ist oder nicht.

  • Irgendein besonderer Grund, die Sie nicht verwenden hashing anstatt Verschlüsselung? Warum sein Passwort Hash. Unterschied zwischen Hash ein Passwort und Verschlüsseln
  • Es ist hashing und salting vorhanden, aber meine Sorge ist in Bezug auf, wie Sie hash/unhash oder verschlüsseln/entschlüsseln, ohne dass es offensichtlich von der client-code. Hoffe, ich war in der Lage zu erklären.
  • Ich denke, oleksii der Punkt ist, dass Sie sollten niemals, unter keinen Umständen in der Lage sein zu entschlüsseln ein Passwort. Sobald ein Benutzer ausgewählt hat, und gespeichert, ein Passwort, es sollte für immer unlesbar. Sie sollte nur in der Lage sein zu vergleichen, einen hash, um es, zu überprüfen, sofern das Passwort nicht Lesen das gespeicherte Passwort (und wenn ein Benutzer benötigt, um ein Kennwort zu ändern, erzeugen Sie eine neue zufallsnummer für ihn).
  • Es gibt keine solche Sache wie unhash. Hash ist eine verlustbehaftete one-way-Konvertierung.
InformationsquelleAutor lbrahim | 2014-04-08
Schreibe einen Kommentar