C# 加密流:读取数据错误

C# 加密流:读取数据错误,c#,.net,encryption,exception-handling,cryptostream,C#,.net,Encryption,Exception Handling,Cryptostream,我得到了这个(我还尝试了crStream.CopyTo(ms)): Data=Stream,包含一个二进制序列化类 运行时出现以下异常: “流不支持读取。” 我试图实现的只是对来自流的数据进行加密。因此,我有一个传入流,我想加密该数据并将其放入内存流。然后将其压缩并保存到文件中。错误说明了一切:创建加密流(=将纯文本放入并获得加密输出,写入): 请看一下MSDN文档,其中包括如何正确操作的示例,基本上就是这一部分(直接来自MSDN): 这意味着我必须将数据从我的流中取出,称为数据,放入一个字节数

我得到了这个(我还尝试了crStream.CopyTo(ms)):

Data=Stream,包含一个二进制序列化类

运行时出现以下异常: “流不支持读取。”


我试图实现的只是对来自流的数据进行加密。因此,我有一个传入流,我想加密该数据并将其放入内存流。然后将其压缩并保存到文件中。

错误说明了一切:创建加密流(=将纯文本放入并获得加密输出,写入):

请看一下MSDN文档,其中包括如何正确操作的示例,基本上就是这一部分(直接来自MSDN):


这意味着我必须将数据从我的流中取出,称为数据,放入一个字节数组,然后将其写入加密流才能访问它?(Data=Stream并包含二进制序列化类)否-您应该能够在源流上使用CopyTo()将数据复制到加密流中
 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();
Stream crStream = new CryptoStream(data, cryptic.CreateEncryptor(), CryptoStreamMode.Write);
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();
}