.NET 4.x Шифрование файла в памяти - C#

Узнай цену своей работы

Формулировка задачи:

Мне нужно шифровать и расшифровывать файл ключом, наверное, при помощи AES. Но расшифровывать мне его надо без записи на диск, т.е. результат расшифровки должен записываться в строку (или в TextBox, если в WPF). Как бы сделать это?
Например, есть такой код:
Листинг программы
  1. public static void aesDecryptFile(string inputFile, string outputFile, string skey)
  2. {
  3. RijndaelManaged aes = new RijndaelManaged();
  4. try
  5. {
  6. PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(skey, Encoding.ASCII.GetBytes("o1q"), "SHA1", 1);
  7. byte[] keyBytes = derivedPassword.GetBytes(256 / 8);
  8. byte[] initialVectorBytes = Encoding.ASCII.GetBytes("OFRqsfcn*aze01xY");
  9. byte[] key = Encoding.ASCII.GetBytes(skey);
  10. using (FileStream fsCrypt = new FileStream(inputFile, FileMode.Open))
  11. {
  12. using (FileStream fsOut = new FileStream(outputFile, FileMode.Create))
  13. {
  14. using (CryptoStream cs = new CryptoStream(fsCrypt, aes.CreateDecryptor(keyBytes, initialVectorBytes), CryptoStreamMode.Read))
  15. {
  16. int data;
  17. while ((data = cs.ReadByte()) != -1)
  18. {
  19. fsOut.WriteByte((byte)data);
  20. }
  21. aes.Clear();
  22. }
  23. }
  24. }
  25. }
  26. catch (Exception ex)
  27. {
  28. Console.WriteLine(ex.Message);
  29. aes.Clear();
  30. }
  31. }
Этот код записывает расшифрованный файл на диск. А как его модифицировать так, что бы он записывал его в строку? Или в TextBox? Без записи на диск, я имею ввиду.

Решение задачи: «.NET 4.x Шифрование файла в памяти»

textual
Листинг программы
  1. public static string aesDecryptFile(string inputFile, string skey)
  2.         {
  3.             RijndaelManaged aes = new RijndaelManaged();
  4.             try
  5.             {
  6.                 PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(skey, Encoding.ASCII.GetBytes("o1q"), "SHA1", 1);
  7.                 byte[] keyBytes = derivedPassword.GetBytes(256 / 8);
  8.                 byte[] initialVectorBytes = Encoding.ASCII.GetBytes("OFRqsfcn*aze01xY");
  9.                 byte[] key = Encoding.ASCII.GetBytes(skey);
  10.                 using (FileStream fsCrypt = new FileStream(inputFile, FileMode.Open))
  11.                 {
  12.                     using (var fsOut = new MemoryStream())
  13.                     {
  14.                         using (CryptoStream cs = new CryptoStream(fsCrypt, aes.CreateDecryptor(keyBytes, initialVectorBytes), CryptoStreamMode.Read))
  15.                         {
  16.                             int data;
  17.                             while ((data = cs.ReadByte()) != -1)
  18.                             {
  19.                                 fsOut.WriteByte((byte)data);
  20.                             }
  21.                             aes.Clear();
  22.                         }
  23.  
  24.                         return Encoding.UTF8.GetString(fsOut.ToArray());
  25.                     }
  26.                 }
  27.             }
  28.             catch (Exception ex)
  29.             {
  30.                 Console.WriteLine(ex.Message);
  31.                 aes.Clear();
  32.             }
  33.  
  34.             return string.Empty;
  35.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут