Приведем полный текст программы

Program cript;

Var

text_in, text_out, cript_st, alf_st: string;

alf2num: array [chr(1).. chr(255)] of integer;

i,ln: integer;

Procedure cript_in (criptin, key_text: StType);

Var

cript_text, textout: string;

d, i, text_len: integer;

Begin

text_len:=length(criptin);{Определяем длину строки для шифрования}

cript_text:=key_text;

{Формируем ключевую строку путем повторения ключевого слова, пока ее длина не превысит длину шифруемой строки}

while length(cript_text)<=text_len do begin

cript_text:= cript_text+key_text;

end;

textout:='';

for i:=1 to text_len do begin{Цикл, в котором происходит шифрование}

{Проверим строку на наличие символов, не входящих в заданный алфавит. Если такие встретятся, программа выдает сообщение об ошибке и выходит из процедуры}

if alf2num[criptin[i]]=0 then begin

writeln('Недопустимый символ', criptin[i]);

exit;

end;

d:=alf2num[criptin[i]]+alf2num[cript_text[i]];

d := d mod ln;

textout:= textout+alf_st[d];

end;

writeln(textout);{процедура выводит на экран зашифрованный текст}

end;

Procedure cript_out (criptout, key_text: StType);

Var

cript_text, textin: string;

d, i, text_len: integer;

Begin

text_len:=length(criptout);{Определяем длину строки для шифрования}

cript_text:=key_text;

{Формируем ключевую строку путем повторения ключевого слова, пока ее длина не превысит длину шифруемой строки}

while length(cript_text)<=text_len do begin

cript_text:= cript_text+key_text;

end;

textin:='';

for i:=1 to text_len do begin

if alf2num[criptout[i]]=0 then begin

writeln('Недопустимый символ ', criptin[i]);

exit;

end;

d:=alf2num[criptout[i]]-alf2num[cript_text[i]];

d := d mod ln;

textin:= textin+alf_st[d];

end;

writeln(textin);{процедура выводит на экран расшифрованный текст}

end;

Begin

alf_st:='ячсмитьбюфывапролджэйцукенгшщзхъЯЧСМИТЬБЮФЫ

ВАПРОЛДЖЭЙЦУКЕНГШЩЗХЪ 1234567890.,+=)(-!?';

ln:=length(alf_st);

for i:=1 to 255 do begin

alf2num[alf_st[i]]:=-1;

end;

for i:=1 to ln do begin

alf2num[alf_st[i]]:=i;

end;

Writeln(‘Введите ключевое слово’);

Readln(cript_st);{Читаем ключевое слово}

Writell(‘Введите строку, подлежащую шифрованию’);

Readln(text_in);{Читаем строку, которую надо зашифровать}

{шифрование выполняется, ответ выводится на экран}

Cript_in(text_in, cript_st);

Writeln(‘Введите текст для расшифровки’);

Readln(text_out);{Читаем текст для расшифровки}

{Расшифровка выполняется, ответ выводится на экран}

Cript_out(text_out, cript_st);

Readln;

End.

Методические указания для выполнения индивидуального задания №3. «Защита информации»