Расшифровка файла в строку — как реализовать? Мне нужно шифровать и расшифровывать файл ключом, наверное, при помощи 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? Без записи на диск, я имею ввиду.

21 Авг 2019 в 07:13
196 +1
0
Ответы
1

Для записи расшифрованного файла в строку или TextBox, вы можете воспользоваться классом MemoryStream. Вам нужно будет прочитать расшифрованные данные из файла в MemoryStream, а затем сконвертировать их в строку.

Вот пример кода, как можно модифицировать ваш метод для записи расшифрованных данных в строку:

public static string aesDecryptFileToString(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 (MemoryStream msOut = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(fsCrypt, aes.CreateDecryptor(keyBytes, initialVectorBytes), CryptoStreamMode.Read))
{
int data;
while ((data = cs.ReadByte()) != -1)
{
msOut.WriteByte((byte)data);
}
aes.Clear();
}
return Encoding.UTF8.GetString(msOut.ToArray());
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
aes.Clear();
return null;
}
}

Теперь вы можете вызвать этот метод, передав путь к зашифрованному файлу и ключ, и сохранить результат в переменную типа string:

string decryptedString = aesDecryptFileToString("путь_к_файлу", "ключ");

Затем вы можете использовать эту переменную для отображения расшифрованных данных в TextBox или в любом другом месте, где вам нужно отобразить строку.

20 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 887 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир