rtu*_*ner 6 .net c# xml serialization
我试图在我的 xml 中实现自动加密和解密,但它不仅有效,即数据未加密。可能是什么原因?我的代码如下所示。我正在使用XmlSerializer课程。谢谢
[Serializable]
public class User
{
public string _username;
public string _password;
public string[] _roles;
[XmlIgnore]
public string Username
{
get { return _username; }
set { _username = value; }
}
[XmlIgnore]
public string Password
{
get { return _password; }
set { _password = value; }
}
[XmlIgnore]
public string[] Roles
{
get { return _roles; }
set { _roles = value; }
}
[OnDeserializingAttribute]
internal void DecryptPersonalData(StreamingContext context)
{
_username = Crypto.Decrypt(_username);
_password = Crypto.Decrypt(_password);
for (int i = 0; i < _roles.Length; i++)
{
_roles[i] = Crypto.Decrypt(_roles[i]);
}
}
[OnSerializingAttribute]
internal void EncryptPersonalData(StreamingContext context)
{
_username = Crypto.Encrypt(_username);
_password = Crypto.Encrypt(_password);
for (int i = 0; i < _roles.Length; i++)
{
_roles[i] = Crypto.Encrypt(_roles[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
OnDeserializing....不使用 来XmlSerializer执行自定义序列化XmlSerializer、从中派生并处理IXmlDeserializationCallback接口。
这是一种建议的解决方法(基本上,您将创建一个“Twin”类,该类在其获取中返回加密数据,并在其集合中进行解密...您不仅在序列化任务期间使用“Twin”...复制从用户到你的用户2)。
或者您可以改用 DataContractSerializer(但它有限制,因为它不支持 XML 属性,仅支持序列化流中的元素)。