Verschlüsseltes XML File lesen

05/03/2009 - 20:31 von Tamara Mikes | Report spam
Salü alle zusammen
ich möchte ein verschlüsseltes XML File mittels einem Stream lesen und als XPathDokument
zur Verfügung stellen.

Ich habe den folgenden Code:
FileStream fStream = File.Open(vKonfigFileCry, FileMode.Open );
CryptoStream cStream = new CryptoStream(fStream, RijndaelAlg.CreateDecryptor
(RijndaelAlg.Key, RijndaelAlg.IV), CryptoStreamMode.Read );
//StreamReader sReader = new StreamReader(cStream);
XmlTextReader sxtr = new XmlTextReader(cStream);
//doc = new XPathDocument(sReader);
doc = new XPathDocument(sxtr); <-- Diese Zeile funktioniert nicht


Ich möchte sxtr welcher gelesen wird an das XPathDoukment doc binden. Doch genau das geht
nicht. Der Code bricht an der Stelle ab und wird beim aufrufenden Element fort gesetzt,
fàllt dort aber in eine Exception weil er nicht aus doc lesen kann.

Bevor das xml Dokument verschlüsselt wurde, hat das gesamte System mit folgendem Code
funktioniert:
FileInfo fi = new FileInfo(Path.Combine(Application.StartupPath, "Konfiguration.xml"));
if (fi.Exists) {
FileStream fs = fi.OpenRead();
doc = new XPathDocument(fs);
fs.Close();


Das verschlüsselte Dokument habe ich mit folgendem Code aus einer Textbox heraus erzeugt:

Rijndael RijndaelAlg = Rijndael.Create();
RijndaelAlg.IV = ASCIIEncoding.ASCII.GetBytes(vKey.PadRight(16, 'x'));
RijndaelAlg.Key = ASCIIEncoding.ASCII.GetBytes(vKey.PadRight(16, 'x'));
RijndaelAlg.Padding = PaddingMode.Zeros;
FileStream fStream = File.Open(vKonfigFileCry, FileMode.Open );
CryptoStream cStream = new CryptoStream(fStream, RijndaelAlg.CreateDecryptor
(RijndaelAlg.Key, RijndaelAlg.IV), CryptoStreamMode.Read );
StreamReader sReader = new StreamReader(cStream);
string vText = sReader.ReadToEnd ();
textBoxXML.Text = vText;
sReader.Close();
cStream.Close();
fStream.Close();

Und ich konnte dieses verschlüsselte Dokument auch wieder in eine Textbox einlesen und
zwar mit folgendem Code:
Rijndael RijndaelAlg = Rijndael.Create();
RijndaelAlg.IV = ASCIIEncoding.ASCII.GetBytes(vKey.PadRight(16, 'x'));
RijndaelAlg.Key = ASCIIEncoding.ASCII.GetBytes(vKey.PadRight(16, 'x'));
RijndaelAlg.Padding = PaddingMode.Zeros;
FileStream fStream = File.Open(vKonfigFileCry, FileMode.Open );
CryptoStream cStream = new CryptoStream(fStream, RijndaelAlg.CreateDecryptor
(RijndaelAlg.Key, RijndaelAlg.IV), CryptoStreamMode.Read );
StreamReader sReader = new StreamReader(cStream);
string vText = sReader.ReadToEnd ();
textBoxXML.Text = vText;
sReader.Close();
cStream.Close();
fStream.Close();



Hat jemand eine Idee, warum im ersten Code, die Zeile doc = new XPathDocument(sxtr); nicht
funktioniert?

Vielen lieben Dank für Hinweise
Gruss Tamara
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
05/03/2009 - 22:44 | Warnen spam
Hallo Tamara,

"Tamara Mikes" schrieb:

doc = new XPathDocument(sxtr); <-- Diese Zeile funktioniert nicht

Ich möchte sxtr welcher gelesen wird an das XPathDoukment doc binden. Doch genau das geht nicht. Der Code bricht an der Stelle ab
und wird beim aufrufenden Element fort gesetzt, fàllt dort aber in eine Exception weil er nicht aus doc lesen kann.



und wie lautet die genaue (und vollstàndige) Fehlermeldung?

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen