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