Шифрование файла методом xor (исключающего или)

Чтение файлов по байтно, кодирование и сохранение результата.

code: #csharp
  1. using (var fs = File.Open(@"FILE_NAME", FileMode.Open, FileAccess.ReadWrite)) {
  2.     // Буффер размером 4Кб
  3.     var buff   = new byte[4096];
  4.     // Кол-во прочитанных байт
  5.     int readed = 0;
  6.  
  7.     while (fs.Position < fs.Length) {
  8.         // Читаем
  9.         readed = fs.Read(buff, 0, buff.Length);
  10.         /* Изменяем исходные данные (байты)
  11.          */
  12.         for (int i = 0; i < readed; i++)
  13.             buff[i] ^= 128; // xor 128
  14.         // Сдвигаемся в начало прочитанного
  15.         fs.Position -= readed;
  16.         // Заменяем исходные данные новыми
  17.         fs.Write(buff, 0, readed);
  18.     }
  19.  
  20.     fs.Flush();
  21. }

Чтобы вернуть исходный файл (после применения этого кода), пройдитесь по нему 'алгоритмом' еще раз.

Поделиться:

Похожие статьи: