C#、Dapper、POCO 和 Encrypt/Decrypt
C#, Dapper, POCO and Encrypt/Decrypt
我有这个 POCO class:
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;
}
当我从数据库中读取数据以及从 C# 访问我的 POCO 对象时,我该如何处理 Encrypt/Decrypt Password
字段?
我试过这样使用:
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;
}
但是当对象填充了我的数据库中的数据时,一切正常,Password
字段正确解密,但是当我从 C# 访问对象以在文本字段中显示时,get
属性 再次加密我的数据:/
这与Dapper无关。还要考虑其他人对您的问题发表的评论。
下面只是建议如何避免在 get
块中解密两次。
private string _password;
private bool _isDecrypted = false;
public string Password
{
get
{
if(_isDecrypted == false)
{
_password = Decrypt(_password);
_isDecrypted = true;
}
return (_password);
}
set
{
_password = Encrypt(value);
_isDecrypted = false;
}
}
我有这个 POCO class:
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;
}
当我从数据库中读取数据以及从 C# 访问我的 POCO 对象时,我该如何处理 Encrypt/Decrypt Password
字段?
我试过这样使用:
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;
}
但是当对象填充了我的数据库中的数据时,一切正常,Password
字段正确解密,但是当我从 C# 访问对象以在文本字段中显示时,get
属性 再次加密我的数据:/
这与Dapper无关。还要考虑其他人对您的问题发表的评论。
下面只是建议如何避免在 get
块中解密两次。
private string _password;
private bool _isDecrypted = false;
public string Password
{
get
{
if(_isDecrypted == false)
{
_password = Decrypt(_password);
_isDecrypted = true;
}
return (_password);
}
set
{
_password = Encrypt(value);
_isDecrypted = false;
}
}