2012-05-10 112 views
3

我需要將XML數據寫入加密文件。我可以讀取/寫入加密文件,但我無法確定如何跳過文件輸入部分並從MemoryStream對象執行。如何將XML寫入加密文件?

這是我到目前爲止。基本上我只需要得到一個字節[]來對我的標準加密進行預處理。

我很感激真棒輸入。我會很快測試這個。

編輯:經過測試,當我嘗試關閉內存流對象時,出現「無法訪問封閉流」異常。

MemoryStream ms = new MemoryStream(); 
XmlTextWriter xmlwriter = new XmlTextWriter(ms,Encoding.ASCII); 
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 xml document 

byte[] bytearray = new byte[ms.Length]; 
ms.Read(bytearray, 0, bytearray.Length); 

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

cryptostream.Close(); 
ms.Close(); 
EncryptedFileStream.Close(); 

回答

2

寫入到MemoryStream並使用MemoryStream.ToArray()

+0

謝謝,我現在使用的是memorystream – kevp

+0

非常感謝。我的第二個錯誤是以不正確的順序關閉對象。 – kevp

1

有作爲的StreamWriter是發生在沒有在構造函數中沒有這樣的事。寫入以您的真實目標流爲目標的CryptoStream。

編輯:你說「我的標準加密」。您是使用標準的.NET加密還是使用自定義方法推出自己的算法?此解決方案可能依賴於您將其修改爲ICryptoTransform實現。

+0

我發佈了我想要做的事情。我剛剛離開學校,這是他們教給我們的作業。如果有更好的方法,我不會感到驚訝,但是我在努力。 – kevp