0

私はこれを手に入れました(私もcrStream.CopyTo(ms)を試しました):

 var cryptic = new DESCryptoServiceProvider();
 cryptic.Key = ASCIIEncoding.ASCII.GetBytes(passKey);
 cryptic.IV = ASCIIEncoding.ASCII.GetBytes(passKey);
 Stream crStream = new CryptoStream(data, cryptic.CreateEncryptor(), CryptoStreamMode.Write);

 Stream ms = new MemoryStream();

 var buffer = new byte[0x10000];
 int n;
 while ((n = crStream.Read(buffer, 0, buffer.Length)) != 0)  // Exception occurs here         
     ms.Write(buffer, 0, n);            
 crStream.Close();

データ = ストリームであり、バイナリのシリアル化されたクラスが含まれています

実行すると、「ストリームは読み取りをサポートしていません」という例外が発生します。

私が達成しようとしているのは、ストリームからのデータを単純に暗号化することです。だから私は着信ストリームがあり、そのデータを暗号化してメモリストリームに入れたいと思っています。これは、圧縮されてファイルに保存されます。

4

1 に答える 1

2

エラーはすべてを示しています:暗号化用のストリームを作成します(=プレーンテキストを入れて、暗号化された出力を書き込みます):

Stream crStream = new CryptoStream(data, cryptic.CreateEncryptor(), CryptoStreamMode.Write);

MSDN-Documentation for CryptoStreamを見てください - それを正しく行う方法の例が含まれています - それは基本的にこの部分です (MSDN から):

using (MemoryStream msEncrypt = new MemoryStream())
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
    {
        //Write all data to the stream.
        swEncrypt.Write(plainText);
    }
    encrypted = msEncrypt.ToArray();
}
于 2012-03-20T09:55:56.693 に答える