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

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

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

Мне нужно шифровать и расшифровывать файл ключом, наверное, при помощи AES. Но расшифровывать мне его надо без записи на диск, т.е. результат расшифровки должен записываться в строку (или в TextBox, если в WPF). Как бы сделать это?
Например, есть такой код:
        public static void aesDecryptFile(string inputFile, string outputFile, string skey)
        {
            RijndaelManaged aes = new RijndaelManaged();
            try
            {
                PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(skey, Encoding.ASCII.GetBytes("o1q"), "SHA1", 1);
                byte[] keyBytes = derivedPassword.GetBytes(256 / 8);
                byte[] initialVectorBytes = Encoding.ASCII.GetBytes("OFRqsfcn*aze01xY");
                byte[] key = Encoding.ASCII.GetBytes(skey);
                using (FileStream fsCrypt = new FileStream(inputFile, FileMode.Open))
                {
                    using (FileStream fsOut = new FileStream(outputFile, FileMode.Create))
                    {
                        using (CryptoStream cs = new CryptoStream(fsCrypt, aes.CreateDecryptor(keyBytes, initialVectorBytes), CryptoStreamMode.Read))
                        {
                            int data;
                            while ((data = cs.ReadByte()) != -1)
                            {
                                fsOut.WriteByte((byte)data);
                            }
                            aes.Clear();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                aes.Clear();
            }
        }
Этот код записывает расшифрованный файл на диск. А как его модифицировать так, что бы он записывал его в строку? Или в TextBox? Без записи на диск, я имею ввиду.

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

textual
Листинг программы
public static string aesDecryptFile(string inputFile, string skey)
        {
            RijndaelManaged aes = new RijndaelManaged();
            try
            {
                PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(skey, Encoding.ASCII.GetBytes("o1q"), "SHA1", 1);
                byte[] keyBytes = derivedPassword.GetBytes(256 / 8);
                byte[] initialVectorBytes = Encoding.ASCII.GetBytes("OFRqsfcn*aze01xY");
                byte[] key = Encoding.ASCII.GetBytes(skey);
                using (FileStream fsCrypt = new FileStream(inputFile, FileMode.Open))
                {
                    using (var fsOut = new MemoryStream())
                    {
                        using (CryptoStream cs = new CryptoStream(fsCrypt, aes.CreateDecryptor(keyBytes, initialVectorBytes), CryptoStreamMode.Read))
                        {
                            int data;
                            while ((data = cs.ReadByte()) != -1)
                            {
                                fsOut.WriteByte((byte)data);
                            }
                            aes.Clear();
                        }
 
                        return Encoding.UTF8.GetString(fsOut.ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                aes.Clear();
            }
 
            return string.Empty;
        }

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


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

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

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