C# 如何在asp.net mvc 5中的模型中加密和解密
我在ASP.NETMVC5中有模型命名用户。我有Encrypt()和Decrypt()扩展方法来分别加密和解密字符串。我想在sving和从数据库获取数据时对数据进行加密和解密。所以,我用了:C# 如何在asp.net mvc 5中的模型中加密和解密,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我在ASP.NETMVC5中有模型命名用户。我有Encrypt()和Decrypt()扩展方法来分别加密和解密字符串。我想在sving和从数据库获取数据时对数据进行加密和解密。所以,我用了: private string _mob; public string mob { get { return _mob.Decrypt(); } set { _mob = v
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(),就不会进行加密/解密。我在数据库中看到纯文本数据。EF将在数据库中存储数据时使用属性访问器,而不是备份字段,因此如果您希望存储加密值,则需要从getter返回加密值 由于您可能还需要一个返回解密值的属性,因此您可能需要一个单独的未映射属性用于解密文本。您可以使用
[NotMapped]
属性,这样EF也不会尝试将其保存到数据库中:
public string mob {get; set; }
[NotMapped]
public string mobDecrypted
{
get
{
return mob.Decrypt();
}
set
{
mob = value.Encrypt();
}
}
EF将在数据库中存储数据时使用属性访问器,而不是备份字段,因此如果您希望存储加密值,则需要从getter返回加密值 由于您可能还需要一个返回解密值的属性,因此您可能需要一个单独的未映射属性用于解密文本。您可以使用
[NotMapped]
属性,这样EF也不会尝试将其保存到数据库中:
public string mob {get; set; }
[NotMapped]
public string mobDecrypted
{
get
{
return mob.Decrypt();
}
set
{
mob = value.Encrypt();
}
}
先生,你能详细说明一下吗?我很高兴向你学习。详细说明什么?EF将使用属性getter,因此如果getter返回未加密的文本,这就是存储在数据库中的内容。。谢谢。。请编辑以便我可以投票。。我无意中否决了它:)当被带到索引列表MVC时,加载它花费了更长的时间。有什么解决办法吗?先生,你能详细说明一下吗?我很高兴向你学习。详细说明什么?EF将使用属性getter,因此如果getter返回未加密的文本,这就是存储在数据库中的内容。。谢谢。。请编辑以便我可以投票。。我无意中否决了它:)当被带到索引列表MVC时,加载它花费了更长的时间。有什么解决办法吗?