加密流:读取数据错误
本文关键字:数据 错误 读取 密流 加密 | 更新日期: 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();
}