2

私は過去にこのコードを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;
4

2 に答える 2

4

現在のアーキテクチャを使用するには、データを入力したばかりの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);
于 2012-05-10T18:06:11.613 に答える
0

多くの試行錯誤の末、ページの最初の方法を使用したXML要素の暗号化を指摘されました。この方法ははるかに簡単で簡単でした。誰かがこれを使用することにした場合、それらが別々の場所で行われている場合は、暗号化と復号化に同じKEYとIVを使用するようにしてください。

基本的に、コピーと貼り付けの操作で、ルート要素を渡すことでドキュメント全体を暗号化できます。

-Feelsgoodman

于 2012-05-14T15:11:19.530 に答える