在序列化之前加密数据

Ody*_*dys 3 c# .net-3.5

我正在尝试加密可序列化(xml)类包含的数据.这是一个简单的例子:

[XmlRootAttribute("FooClass")] 
public class FooClass
{
    private string _personalData;

    public PersonalData
    {
        set { _personalData = value;}
        get { return _personalData; }
    }
}
Run Code Online (Sandbox Code Playgroud)

假设已经准备好使用这些方法:Encrypt&Decrypt.有没有办法在序列化过程中以某种方式使用它们以便PersonalData在序列化输出中加密?

com*_*ech 5

是.将PersonalData标记为非序列化,然后添加新属性以返回并接受序列化数据(请注意,XmlAttribute是可选的):

[XmlRootAttribute("FooClass")] 
public class FooClass
{
    private string _personalData;

    [NonSerialized()]
    public string PersonalData
    {
        set { _personalData = value;}
        get { return _personalData; }
    }

    [XmlAttribute("PersonalData")]
    public string PersonalDataEncrypted
    {
        set { _personalData = DecryptData(value);}
        get { return EncryptData(_personalData); }
    }
}
Run Code Online (Sandbox Code Playgroud)