Getter/setter用于模型中的双向加密属性

 手机用户2602897795 发布于 2023-01-07 13:00

我需要加密数据库中的某些字段,因此,我需要加密进入数据库的数据,然后在显示时对其进行解密.我已经设置了加密方法和解密方法,我让它像这样工作,例如,一个动作:

model.EncryptedProperty = Encrypt(viewModel.Property);
viewModel.Property = Decrypt(EncryptedProperty);

这很好,但我的问题是其他开发人员需要记住在他们使用该属性时加密/解密属性.对于项目中的新人来说,这可能是一个问题,因为它需要他们知道这个属性是否已经预先加密.我试图通过在模型上加密/解密来改进加密,如下所示:

private string _property;
public string Property
{
    get { return DecryptString(_property); }
    set { _property = EncryptString(value); }
}

但是,这似乎不起作用,当我在视图中查看此属性时,它看起来好像虽然它已经加密了数据库中的加密数据(我已经通过使用DecryptString(DecriptString(_property))它来测试它返回真值.

这里有什么解决方案?有更优雅的方式来解决这个问题吗?

1 个回答
  • 在那种情况下,我可能会这样做:

    [WhateverYourDataLayerNeeds("Property")]
    public string EncryptedProperty {get;set;}
    
    public string DecryptedProperty
    {
        get { return DecryptString(EncryptedProperty); }
        set { EncryptedProperty = EncryptString(value); }
    }
    

    然后数据库层与第一个进行对话,并且没有混淆.

    2023-01-07 13:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有