如何编写使用IXmlSerializable以加密方式序列化到的XML文件?
我将我的数据(反序列化我的数据(包含文件节点的节点的结构,就像文件系统文件夹一样)成一个xml文件:
public class DataNodeCollection : List<DataNode>, IXmlSerializable
{
internal void Serialize()
{
string sFilename = getFilename();
using (var writer = new StreamWriter(sFilename, false, Encoding.Unicode))
{
var serializer = new XmlSerializer(this.GetType(), new XmlRootAttribute("SystemNodes"));
serializer.Serialize(writer, this);
writer.Flush();
}
}
public void WriteXml(XmlWriter writer)
{
writer.WriteAttributeString("FileFormatVersion", CurrentFormatVersion.ToString(CultureInfo.InvariantCulture));
foreach (DataNode elem in this)
{
var innerSerializer = new XmlSerializer(typeof(DataNode), new XmlRootAttribute(elem.Name));
innerSerializer.Serialize(writer, elem);
}
}
}
public class DataNode : IXmlSerializable
{
private IDictionary<string, string> _mapAttributes = new Dictionary<string, string>();
private IList<DataNode> _subNodes = new List<DataNode>();
public string Name { get; protected set; }
public void WriteXmlXmlWriter writer)
{
foreach (string sKey in _mapAttributes.Keys)
{
writer.WriteAttributeString(sKey, _mapAttributes[sKey]);
}
foreach (DataNode node in _subNodes)
{
var innerSerializer = new XmlSerializer(typeof(DataNode), new XmlRootAttribute(node.Name));
innerSerializer.Serialize(writer, node);
}
}
}
上面的代码显示了序列化代码,反序列化被省略了,因为我认为不需要它来解决问题。
那么,如何在反序列化之前将文件加密并解密?加密/解密应该在内存中进行(我不想先写一个未加密的文件再读回去进行加密)
编辑:“加密”是指该文件在不知道如何解密(对称密钥)的情况下不应为其他程序所可读或可解析。
如何编写使用IXmlSerializable以加密方式序列化到的XML文件?我将数据(像文件系统文件夹一样包含节点结点的节点结构)数据反序列化为xml -...
要实现完全加密,请将CryptoStream
实例传递给XmlSerializer。