簡體   English   中英

讀取/解密加密的XML文件,然后在內部進行處理

[英]Read/decrypt encrypted XML file and then process internally

我過去曾使用此代碼來編寫和讀取xml文件。 這次,我想編寫一些加密的生成的XML,然后讀取它並在內部對其進行處理。 我將發布代碼,也許有人可以發現問題。

當我測試解密時,我已經能夠輸出具有連續的空字符代碼行的文件。 加密文件似乎包含數據,並且大小隨數據量的不同而變化。

請幫忙,謝謝!

加密

MemoryStream ms = new MemoryStream();
XmlTextWriter xmlwriter = new XmlTextWriter(ms,Encoding.UTF8);
FileStream EncryptedFileStream = new FileStream(file, FileMode.Create, FileAccess.Write);

DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA");
DES.IV = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA");

ICryptoTransform desEncrypt = DES.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(EncryptedFileStream, desEncrypt, CryptoStreamMode.Write);

/*create working and tested XML data here*/


byte[] bytearray = new byte[ms.Length];


ms.Read(bytearray, 0, bytearray.Length);
cryptostream.Write(bytearray, 0, bytearray.Length);

cryptostream.Close();

EncryptedFileStream.Close();

xmlwriter.Close();
ms.Flush();
ms.Close();

DECRYPT

MemoryStream ms = new MemoryStream();
StreamWriter swDecrypt = new StreamWriter(ms);

DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA");
DES.IV = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA");

ICryptoTransform desDecrypt = DES.CreateDecryptor();

FileStream fsDecrypt = new FileStream(mstrIndexFile, FileMode.Open, FileAccess.Read);

CryptoStream cryptostreamDecr = new CryptoStream(fsDecrypt, desDecrypt, CryptoStreamMode.Read);

swDecrypt.Write(new StreamReader(cryptostreamDecr).ReadToEnd());
swDecrypt.Flush();
ms.Position = 0;

使用當前的體系結構,您需要使用剛剛填充了數據的MemoryStream(不要忘記將其位置重置為零並刷新所有未完成的寫操作)

//I am currently stuck on this point.
swDecrypt.Flush();
ms.Position=0;
XmlTextReader lxmlReader = new XmlTextReader(ms);

但是,我的感覺是您在這里不需要MemoryStream。 相反,只需將CryptoStream提供給XmlTextReader:

CryptoStream cryptostreamDecr = new CryptoStream(.....
XmlTextReader lxmlReader = new XmlTextReader(cryptostreamDecr);

經過多次嘗試和錯誤之后,我指向使用頁面上第一種方法的XML元素加密 這種方法更加簡單直接。 如果有人決定使用它,只要確保它們在單獨的位置進行加密和解密,請確保使用相同的KEY和IV。

基本上,是復制粘貼操作,您可以通過傳遞根元素來加密整個文檔!

-Feelsgoodman

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM