加密流:读取数据错误

本文关键字:数据 错误 读取 密流 加密 | 更新日期: 2023-09-27 18:28:25

我得到了这个(我也尝试了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();

Data=流,包含二进制序列化类

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

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

加密流:读取数据错误

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

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

只要看一下CryptoStream的MSDN文档-其中有一个关于如何正确操作的示例-基本上是这一部分(直接来自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();
}