Ich habe diese POCO-Klasse:C#, Dapper, POCO und Verschlüsseln/Entschlüsseln
class Users
{
public string User { get; set; }
public string Password { get; set; }
private string Encrypt(string plainText)
{
...
return encryptedText;
}
private string Decrypt(string cipherText)
{
...
return decryptedText;
}
Wie kann ich Password
Feld zum Verschlüsseln/Entschlüsseln, wenn ich Daten aus meiner Datenbank gelesen und wenn ich auf meine POCO-Objekt aus C#?
ich versuche, wie diese zu verwenden sometingh:
class Users
{
private string _password;
public string User { get; set; }
public string Password
{
get
{
return Encriptar(_password);
}
set
{
_password = Desencriptar(value);
}
}
private string Encrypt(string plainText)
{
...
return encryptedText;
}
private string Decrypt(string cipherText)
{
...
return decryptedText;
}
Aber wenn die Objekte mit Daten aus der Datenbank gefüllt sind, ist alles in Ordnung, das Password
Feld richtig dechiffriert, aber wenn ich Zugriff auf ein Objekt aus C# im Textfeld anzuzeigen, die get
Eigenschaft ruft wieder meine Daten auf:/
Wenn Sie eine Funktion haben, die ein Passwort entschlüsselt, tun Sie es falsch. [Pflichtlektüre] (http://stackoverflow.com/q/1054022/335858). – dasblinkenlight
** Verschlüsseln Sie keine Passwörter **, wenn der Angreifer die DB erhält, bekommt er auch den Verschlüsselungsschlüssel. Iterate über einen HMAC mit einer zufälligen Salz für etwa 100ms Dauer und speichern Sie das Salz mit dem Hash. Verwenden Sie Funktionen wie 'password_hash' /' password_verify', 'PBKDF2' (aka' Rfc2898DeriveBytes'), 'BCrypt' und ähnliche Funktionen. Es geht darum, den Angreifer dazu zu bringen, viel Zeit mit der Suche nach Passwörtern zu verbringen. – zaph
Danke für die Tipps :) –