3

XMLデータを暗号化されたファイルに書き込む必要があります。暗号化されたファイルの読み取り/書き込みはできますが、ファイル入力部分をスキップしてMemoryStreamオブジェクトから実行する方法がわかりません。

これは私がこれまでに持っているものです。基本的には、標準の暗号化を実行するためにByte[]を取得する必要があります。

素晴らしい入力に感謝します。これはまもなくテストします。

編集:テスト後、メモリストリームオブジェクトを閉じようとすると、「閉じたストリームにアクセスできません」という例外が発生します。

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();
4

2 に答える 2

2

MemoryStreamに書き込み、MemoryStream.ToArray()を使用します

于 2012-05-10T16:51:27.600 に答える
1

コンストラクターに何も取り込まないStreamWriterのようなものはありません。実際の宛先ストリームをターゲットとするCryptoStreamに書き込みます。

編集:あなたは「私の標準暗号化」と言います。標準の.NET暗号化を使用していますか、それともカスタムメソッドを使用して独自のアルゴリズムを使用していますか?このソリューションは、ICryptoTransform実装に修正することに依存している可能性があります。

于 2012-05-10T16:52:37.420 に答える