C #, Dapper, POCO 및 암호화 / 해독

c# dapper encryption poco sqlite

문제

나는이 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;
    }

내 데이터베이스에서 데이터를 읽을 때 및 C #에서 내 POCO 개체에 액세스 할 때 Password 암호화 / 암호 해독 필드로 어떻게 할 수 있습니까?

나는 이런 식으로 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;
    }

하지만 개체가 내 데이터베이스의 데이터로 채워지면 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;
    }
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow