简体   繁体   English

C#,Dapper,POCO和加密/解密

[英]C#, Dapper, POCO and Encrypt/Decrypt

I have this POCO class: 我有这个POCO课程:

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

How can I do to Encrypt/Decrypt Password field when I read data from my database and when I access my POCO object from C#? 当我从数据库中读取数据以及从C#访问POCO对象时,如何对Password字段进行加密/解密?

I'm tried to use sometingh like this: 我试图像这样使用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;
    }

But when the objects are filled with data from my database, all is ok, the Password field decrypts correctly, but when I access an object from C# to show in text field, the get property enrypts again my data :/ 但是,当用数据库中的数据填充对象时,一切正常, Password字段正确解密,但是当我从C#访问对象以在文本字段中显示时, get属性再次加密我的数据:/

This has nothing to do with Dapper. 这与Dapper无关。 Also consider the comments posted by others to your question. 还请考虑其他人对您的问题发表的评论。

Following just suggests how to avoid decryption twice in get block. 以下只是建议如何避免在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;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM