.NET 4.x Шифрование файлов AES алгоритмом - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, не могу решить проблему с дешифровкой файлов, при дешифровке строки написанные русскими буквами превращаются в псевдографику (квадраты). Прошу помочь в данной проблеме! Вот код дешифровки:
Листинг программы
  1. if (openfile.ShowDialog() == DialogResult.OK)
  2. {
  3. FileStream fsFileIn = File.OpenRead(textBox2.Text);
  4. FileStream fsKeyFile = File.OpenRead(openfile.FileName);
  5. FileStream fsFileOut = File.Create(textBox2.Text+"_decrypt");
  6. AesCryptoServiceProvider cryptAlgorithm = new AesCryptoServiceProvider();
  7. BinaryReader brFile = new BinaryReader(fsKeyFile);
  8. cryptAlgorithm.Key = key;
  9. cryptAlgorithm.IV = iv;
  10.  
  11. CryptoStream csEncrypt = new CryptoStream(fsFileIn, cryptAlgorithm.CreateDecryptor(), CryptoStreamMode.Read);
  12.  
  13. StreamReader srStream = new StreamReader(csEncrypt);
  14. StreamWriter swStream = new StreamWriter(fsFileOut);
  15. swStream.WriteLine(srStream.ReadToEnd());
  16. swStream.Close();
  17. fsFileOut.Close();
  18. srStream.Close();
  19. }

Решение задачи: «.NET 4.x Шифрование файлов AES алгоритмом»

textual
Листинг программы
  1. using ( var fs = File.Open( fileIn, FileMode.Open, FileAccess.Read ) ) {
  2. // Создаем буфер длинной в файл + 8 байт, для хранения изначальной
  3. // длины файла, т.к. при шифровании используется выравнивание по
  4. // определенной длине блока (например 512 байт, или 1024)
  5. // тем самым файл может немного "раздуть" и оригинал при дешифровке
  6. // мы уже не получим
  7. buff = new byte[fs.Length + sizeof( long )];
  8. // Читаем данные в буфер не с самого начала, а со смещением 8 байт
  9. fs.Read( buff, sizeof( long ), buff.Length - sizeof( long ) );
  10. /* Записываем в первые 8 байт длину исходного файла
  11.  * нужно это для того чтобы, после дешифровки не было
  12.  * лишних данных
  13.  */
  14. int i = 0;
  15. // Перевод значение из long в byte[]
  16. foreach ( byte @byte in BitConverter.GetBytes( fs.Length ) )
  17.     buff[i++] = @byte;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут