Шифр Цезаря

Исходным текстом, как и в предыдущем методе, является содержимое файла ishodn.txt. Этот файл также используется для метода Виженера и одноразового блокнота. Ключ вводится пользователем.

Текст программы (LR2.pas)

Program Shifrovka_Cesar;

uses crt;

type ftype = text;

const n=224;

var

fs,fe,fd: ftype;

str,str2: string;

k,s,e,d,i: integer;

m: char;

begin

clrscr;

writeln (' Шифровка/Дешифровка методом Цезаря ');

writeln ('1 - Шифровка');

writeln ('2 - Дешифровка');

writeln ('0 - Выход');

repeat

m:=readkey;

if (m='1') or (m='2') then

begin

repeat

write ('Введите ключ от 1 до 223: ');

readln(k);

until (k>=1) and (k<=223);

end;

case m of

'1':

begin

assign (fs,'ishodn.txt'); reset(fs);

assign (fe,'zashifr2.txt'); rewrite(fe);

while not eof(fs) do

begin

readln(fs,str);

str2:='';

for i:=1 to length(str) do

begin

s:=ord(str[i]);

if s>=32 then e:=((s-32+k) mod n) + 32

else e:=s;

str2:=str2+chr(e);

end;

if not(eof(fs)) then writeln(fe,str2)

else write(fe,str2);

end;

close(fs); close(fe);

writeln('Текст зашифрован');

end;

'2':

begin

assign (fe,'zashifr2.txt'); reset(fe);

assign (fd,'desh2.txt'); rewrite(fd);

while not eof(fe) do

begin

readln(fe,str);

str2:='';

for i:=1 to length(str) do

begin

e:=ord(str[i]);

if e>=32 then d:=(e-32+n-k) mod n + 32

else d:=e;

str2:=str2+chr(d);

end;

if not(eof(fe)) then writeln(fd,str2)

else write(fd,str2);

end;

close(fe); close(fd);

writeln('Текст дешифрован');

end;

end;

until m='0';

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: