我如何在asp.net mvc 5中加密和解密模型

时间:2016-05-14 02:42:54

标签: c# asp.net asp.net-mvc razor

我在ASP.NET MVC 5中有一个名为Users的模型。我分别使用Encrypt()和Decrypt()扩展方法来加密和解密字符串。我想在从数据库进行sving和获取时加密和解密数据。所以,我用过:

private string _mob;
public string mob
    {
        get
        {
            return _mob.Decrypt();
        }
        set
        {
            _mob = value.Encrypt();
        }
    }

但我无法实现目标。当我使用

public string mob
    {
        get
        {
            return _mob;
        }
        set
        {
            _mob = value.Encrypt();
        }
    }

我完成加密但是只要在get {}中添加Decrypt(),就没有加密/解密完成。我在数据库中看到纯文本数据。

1 个答案:

答案 0 :(得分:2)

EF将数据存储在数据库中时将使用属性访问器,而不是支持字段,因此如果您希望存储加密值,则需要从getter返回加密值。

由于您可能想要一个返回解密值的属性,因此您可能需要一个单独的未映射的属性来解密文本。您可以使用[NotMapped]属性,以便EF也不会尝试将其保存到数据库中::

public string mob {get; set; }

[NotMapped]
public string mobDecrypted
{
    get
    {
        return mob.Decrypt();
    }
    set
    {
        mob = value.Encrypt();
    }
}