将流转换为字符串

本文关键字:字符串 转换 | 更新日期: 2023-09-27 18:02:27

我在本地机器上存储了一个加密文件。我解密文件,我得到解密的数据作为一个流,我试图将其转换为字符串。下面是我的代码,但我总是得到文本为空。

private void Decrypt(string inputFilePath, string outputfilePath)
{
   string EncryptionKey = "MAKV2SPBNI99212";
   using (Aes encryptor = Aes.Create())
   {
      Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, 
                               new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 
                               0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
      encryptor.Key = pdb.GetBytes(32);
      encryptor.IV = pdb.GetBytes(16);
      using (FileStream fsInput = new FileStream(inputFilePath, FileMode.Open))
      {
         using (CryptoStream cs = new CryptoStream(fsInput, 
                            encryptor.CreateDecryptor(), CryptoStreamMode.Read))
         {
            using (Stream s = new MemoryStream())
            {
               int data;
               while ((data = cs.ReadByte()) != -1)
               {
                  s.WriteByte((byte)data);
               }
               StreamReader reader = new StreamReader(s);
               string text = reader.ReadToEnd();
            }
         }
      }
   }
}

将流转换为字符串

在你的内存流-尝试. flush()和位置= 0后,你写的数据。

放弃MemoryStream,直接用StreamReader包装CryptoStream。现在你甚至不用担心位置等等。更容易编码…少错误。