使用XML序列化时保护敏感值(密码)?

Nea*_*eal 2 .net c# security xml-serialization

我们有一个包含用户登录配置文件的类,它是一个简单的类,我们只是序列化到磁盘.我们当然可以对序列化过程进行加密,压缩等,但是,由于其他原因,我想保持简单.

序列化的一个项是Password(字符串)属性.我不介意它被序列化,但我希望序列化的值是3DES加密的,所以如果有人要在某些阅读器中打开文件,它就不会破坏密码.我知道我可以简单地将密码值设置为加密值并获取加密值但是我想稍微自动化它以便当调用GET'er处理解密时,SET'er处理加密因此它是无缝.

你有什么建议是最好的方法呢?我在想的是我需要将序列化程序忽略的"密码"属性标记为它,它只是另一个保存加密值的属性的路径,因此将其解密.这是处理此问题的最佳/唯一方法吗?只是想通过我能看到这样做的唯一方法来查看是否有更简单的方法进行编码,以便将加密/解密保持在序列化类逻辑中.

谢谢.

Mat*_*asG 11

您可以标记要通过序列化忽略的密码属性,并使用要序列化的包装器属性的类型:

public class LogonInfo
{
    [XmlIgnore]
    public string Password { get; set; }

    public string EncPassword {
    {
        get
        {
            return Encrypt(Password);
        }
        set
        {
            Password = Decrypt(value);
        }
    }

    // TODO: add Encrypt and Decrypt methods
}
Run Code Online (Sandbox Code Playgroud)