我在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(),就没有加密/解密完成。我在数据库中看到纯文本数据。
答案 0 :(得分:2)
EF将数据存储在数据库中时将使用属性访问器,而不是支持字段,因此如果您希望存储加密值,则需要从getter返回加密值。
由于您可能想要一个返回解密值的属性,因此您可能需要一个单独的未映射的属性来解密文本。您可以使用[NotMapped]
属性,以便EF也不会尝试将其保存到数据库中::
public string mob {get; set; }
[NotMapped]
public string mobDecrypted
{
get
{
return mob.Decrypt();
}
set
{
mob = value.Encrypt();
}
}