Песни о Паскале | страница 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=
Как говорится, родная мама не узнает! Все, что попадает в «мясорубку» нашего шифровальщика, обращается в фарш. Однако последующая расшифровка «перемолотого» файла в точности восстановила его.
Примененный нами метод шифрования не так уж крут, опытный взломщик легко раскроет его. Но фундамент заложен, и когда-нибудь вы придумаете изощренные методы шифрования. Например, ключ шифра можно сделать переменным и зависящим от номера символа в строке или файле. Подумайте над этим. Если же вы намерены заняться криптографией всерьез, изучайте математику! Для программиста это наука номер один.