reading / writing encrypted xml

herlindaogromo

New Member
I can read an write my serialized class fine until I try to encrypt / decrypt... here is a snippet of my code:\[code\]public class ShelfCache{ public Shelf Data; public ShelfCache() { Data = http://stackoverflow.com/questions/11508878/new Shelf(); } public void Write(string Filename) { XmlSerializer xsl = new XmlSerializer(typeof(Shelf)); TextWriter xslWriter = new StreamWriter(Filename); xsl.Serialize(xslWriter, Data); xslWriter.Flush(); xslWriter.Close(); } public void Read(string Filename) { Data = new Shelf(); XmlSerializer xsl = new XmlSerializer(typeof(Shelf)); TextReader xslReader = new StreamReader(Filename); Data = (Shelf)xsl.Deserialize(xslReader); xslReader.Close(); } public void WriteEncrypted(string Filename, string EncryptionKey ="") { string _Key = EncryptionKey + Environment.ExpandEnvironmentVariables("%USERNAME%%COMPUTERNAME%123456789ABCDEF0123456789abcdef").Substring(0, 32); string _IV = Environment.ExpandEnvironmentVariables("%COMPUTERNAME%123456789abcdef").Substring(0, 16); byte[] Key = Encoding.UTF8.GetBytes(_Key); byte[] IV = Encoding.UTF8.GetBytes(_IV); FileStream CacheStream = new FileStream(Filename, FileMode.Create, FileAccess.ReadWrite, FileShare.Read); RijndaelManaged CryptoProvider = new RijndaelManaged(); ICryptoTransform CacheTransform = CryptoProvider.CreateEncryptor(Key, IV); CryptoStream EncryptionStream = new CryptoStream(CacheStream, CacheTransform, CryptoStreamMode.Write); XmlSerializer xsl = new XmlSerializer(typeof(Shelf)); xsl.Serialize(EncryptionStream, Data); EncryptionStream.Flush(); CacheStream.Close(); } public void ReadEncrypted(string Filename, string EncryptionKey = "") { string _Key = EncryptionKey + Environment.ExpandEnvironmentVariables("%USERNAME%%COMPUTERNAME%123456789ABCDEF0123456789abcdef").Substring(0, 32); string _IV = Environment.ExpandEnvironmentVariables("%COMPUTERNAME%123456789abcdef").Substring(0, 16); byte[] Key = Encoding.UTF8.GetBytes(_Key); byte[] IV = Encoding.UTF8.GetBytes(_IV); FileStream CacheStream = new FileStream(Filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); RijndaelManaged CryptoProvider = new RijndaelManaged(); ICryptoTransform CacheTransform = CryptoProvider.CreateEncryptor(Key, IV); CryptoStream DecryptionStream = new CryptoStream(CacheStream, CacheTransform, CryptoStreamMode.Read); XmlSerializer xsl = new XmlSerializer(typeof(Shelf)); Data = http://stackoverflow.com/questions/11508878/(Shelf)xsl.Deserialize(DecryptionStream); CacheStream.Close(); }}\[/code\]I get the exception "There is an error in XML document (1 1)." with an inner exception "Data at the root level is invalid. Line 1, position 1." on the line:\[code\] Data = http://stackoverflow.com/questions/11508878/(Shelf)xsl.Deserialize(DecryptionStream);\[/code\]
 
Back
Top