Песни о Паскале | страница 95



>      S: string;

>begin

>      if aOper then begin       { если шифровать }

>      Assign(FileIn, aFile);

>      Assign(FileOut, CFixName);

>      end else begin       { если расшифровать }

>      Assign(FileIn, CFixName);

>      Assign(FileOut, aFile);

>      end;

>      Reset(FileIn);    { открыть входной файл для чтения }

>      Rewrite(FileOut); { открыть выходной файл для записи }

>      while not Eof(FileIn) do begin

>      { пока не закончился входной файл }

>      Readln(FileIn, S);       { читать очередную строку из файла }

>      if aOper

>      then EncryptStr(S) { зашифровать }

>      else DecryptStr(S); { расшифровать }

>      Writeln(FileOut, S);       { записать в выходной файл }

>      end;

>      { закрыть оба файла }

>      Close(FileIn); Close(FileOut);

>end;

>      {----- Главная программа -----}

>var S: string;

>      Oper: boolean; { TRUE – шифровать, FALSE – расшифровать}

>begin

>      Write('Укажите операцию (1 – шифровать, иначе – расшифровать):');

>      Readln(S);

>      Oper:= S='1'; { Oper=TRUE если S='1' }

>      if Oper

>      then Write('Введите имя шифруемого файла: ')

>      else Write('Введите имя расшифрованного файла: ');

>      Readln(S);

>      CryptFile(S, Oper); { Вызов процедуры шифрования–расшифровки }

>      Write('OK, нажмите Enter'); Readln;

>end.


Пространные пояснения излишни. Признак выполняемой операции формируется в булевой переменной Oper в третьей строке главной программы по цифре, введенной в переменную S. Значение Oper=TRUE влечет зашифровку файла, а FALSE — расшифровку. Затем в переменную S вводится имя обрабатываемого файла. В конце концов, вызывается процедура CryptFile с передачей в неё двух параметров: имени файла и признака выполняемой операции (aFile и aOper). Приставка «a» в начале имен этих параметров (префикс) помогает при чтении программы отличить параметр от других переменных.

Полюбуйтесь, во что превратила эта программа один из файлов на Паскале (приведен небольшой фрагмент).


>}"Rtqi2420rcu"

>xct"Ocp"<"uvtkpi=

>}///"░гьёднзпкз"▒т░шзжхтэ"///

>rtqegfwtg"Rcwug=

>dgikp

>"""""Ytkvgnp*)Пвиокфз"Gpvgt<)+=""Tgcfnp=


Как говорится, родная мама не узнает! Все, что попадает в «мясорубку» нашего шифровальщика, обращается в фарш. Однако последующая расшифровка «перемолотого» файла в точности восстановила его.

Примененный нами метод шифрования не так уж крут, опытный взломщик легко раскроет его. Но фундамент заложен, и когда-нибудь вы придумаете изощренные методы шифрования. Например, ключ шифра можно сделать переменным и зависящим от номера символа в строке или файле. Подумайте над этим. Если же вы намерены заняться криптографией всерьез, изучайте математику! Для программиста это наука номер один.