.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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д