Одноразовый блокнот

Ключ хранится в файле keyn.txt.

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

Program Shifrovka_note;

uses crt;

type ftype = text;

const n=224;

var

fs,fe,fd,fk: ftype;

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

m,ch_in: char; str,str1:string;

begin

clrscr;

writeln (' Шифровка/Дешифровка методом одноразового блокнота ');

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

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

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

writeln;

writeln('Местоположение ключа - keyn.txt');

writeln;

assign (fk,'keyn.txt'); reset(fk);

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

while not eof(fk) do

begin

readln(fk,str); a:=a+length(str);

end;

close(fk);

while not eof(fs) do

begin

readln(fs,str1);

b:=b+length(str1);

end;

close(fs);

if a<>b then begin

writeln('Кодировка невозможна, так как длина ключа не соответствует длине исходного текста');

writeln('Введите корректный ключ и перезапустите программу.');

writeln('Для выхода нажмите Enter');

readln;

exit;

end;

repeat

m:=readkey;

case m of

'1':

begin

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

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

assign (fk,'keyn.txt'); reset(fk);

while not eof(fs) do

begin

read(fk,ch_in); k:=ord(ch_in);

read(fs,ch_in); s:=ord(ch_in);

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

else e:=s;

write(fe,chr(e));

end;

close(fs); close(fe); close(fk);

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

end;

'2':

begin

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

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

assign (fk,'keyn.txt'); reset(fk);

while not eof(fe) do

begin

read(fk,ch_in); k:=ord(ch_in);

read(fe,ch_in); e:=ord(ch_in);

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

else d:=e;

write(fd,chr(d));

end;

close(fe); close(fd); close(fk);

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

end;

end;

until m='0';

end.


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



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