Приведем полный текст программы
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. «Защита информации»