.NET 4.x Шифрование файлов AES алгоритмом - C#
Формулировка задачи:
Здравствуйте, не могу решить проблему с дешифровкой файлов, при дешифровке строки написанные русскими буквами превращаются в псевдографику (квадраты).
Прошу помочь в данной проблеме!
Вот код дешифровки:
if (openfile.ShowDialog() == DialogResult.OK) { FileStream fsFileIn = File.OpenRead(textBox2.Text); FileStream fsKeyFile = File.OpenRead(openfile.FileName); FileStream fsFileOut = File.Create(textBox2.Text+"_decrypt"); AesCryptoServiceProvider cryptAlgorithm = new AesCryptoServiceProvider(); BinaryReader brFile = new BinaryReader(fsKeyFile); cryptAlgorithm.Key = key; cryptAlgorithm.IV = iv; CryptoStream csEncrypt = new CryptoStream(fsFileIn, cryptAlgorithm.CreateDecryptor(), CryptoStreamMode.Read); StreamReader srStream = new StreamReader(csEncrypt); StreamWriter swStream = new StreamWriter(fsFileOut); swStream.WriteLine(srStream.ReadToEnd()); swStream.Close(); fsFileOut.Close(); srStream.Close(); }
Решение задачи: «.NET 4.x Шифрование файлов AES алгоритмом»
textual
Листинг программы
using ( var fs = File.Open( fileIn, FileMode.Open, FileAccess.Read ) ) { // Создаем буфер длинной в файл + 8 байт, для хранения изначальной // длины файла, т.к. при шифровании используется выравнивание по // определенной длине блока (например 512 байт, или 1024) // тем самым файл может немного "раздуть" и оригинал при дешифровке // мы уже не получим buff = new byte[fs.Length + sizeof( long )]; // Читаем данные в буфер не с самого начала, а со смещением 8 байт fs.Read( buff, sizeof( long ), buff.Length - sizeof( long ) ); /* Записываем в первые 8 байт длину исходного файла * нужно это для того чтобы, после дешифровки не было * лишних данных */ int i = 0; // Перевод значение из long в byte[] foreach ( byte @byte in BitConverter.GetBytes( fs.Length ) ) buff[i++] = @byte;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д