Ключ хранится в файле 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.