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;
    }
}