.NET 4.x Шифрование файла в памяти - C#
Формулировка задачи:
Мне нужно шифровать и расшифровывать файл ключом, наверное, при помощи AES.
Но расшифровывать мне его надо без записи на диск, т.е. результат расшифровки должен записываться в строку (или в TextBox, если в WPF).
Как бы сделать это?
Этот код записывает расшифрованный файл на диск. А как его модифицировать так, что бы он записывал его в строку? Или в TextBox? Без записи на диск, я имею ввиду.
Например, есть такой код:
Листинг программы
- 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();
- }
- }
Решение задачи: «.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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д