【问题标题】:How do i encrypt and decrypt in model in asp.net mvc 5我如何在 asp.net mvc 5 中的模型中加密和解密
【发布时间】:2017-03-31 22:13:50
【问题描述】:

我在 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(),就没有完成加密/解密。我在数据库中看到纯文本数据。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 先生,您能详细说明一下吗?我很高兴向你学习。
    • 详细说明什么? EF 将使用属性 getter,因此如果您的 getter 返回未加密的文本,这就是存储在数据库中的内容。
    • 它工作得很好.. 非常感谢.. 请编辑,这样我就可以投票了.. 我不小心投了反对票 :)
    • 当被带到索引列表 MVC 时,它需要更长的时间来加载。有什么解决办法吗?
    猜你喜欢
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多