Реферат: Защита информации в ПЭВМ. Шифр Плейфера
{Пара символов находятся в одном столбце матрицы}
Str:= Str + INDEX[((ALFAVIT[Ord(SIM1)].STROK mod 6) + 1), (ALFAVIT[Ord(SIM1)].STOLB)]
+ INDEX[((ALFAVIT[Ord(SIM2)].STROK mod 6) + 1), (ALFAVIT[Ord(SIM2)].STOLB)]
ELSE
{Пара символов находятся в разных строках и столбцах матрицы}
Str:= Str + INDEX[(ALFAVIT[Ord(SIM2)].STROK), (ALFAVIT[Ord(SIM1)].STOLB)]
+ INDEX[(ALFAVIT[Ord(SIM1)].STROK), (ALFAVIT[Ord(SIM2)].STOLB)];
end;
SHIFR_TXT:= Str;
END ; {Конец основного блока ПФ SHIFR_TXT}
{Производится расшифрация строки }
FUNCTION DESHIFR_TXT(Str: Stroca; Alfavit: MATR; INDEX: Simvol): Stroca;
VAR {Объявление переменных}
SIM1, SIM2: Char;
NEW: STRING;
I, Dlina_str, Dlina_new: Byte; {I - счетчик цикла}
BEGIN {Начало основного блока ПФ DESHIFR_TXT}
{Дешифрование открытого текста по матрице алфавита Плэйфера}
New:= '';
Dlina_str:= Length(Str)div 2;
FOR I:= 1 TO Dlina_str DO
begin
SIM1:= Str[2*I - 1];
SIM2:= Str[2*I];
IF (ALFAVIT[Ord(SIM1)].STROK = ALFAVIT[Ord(SIM2)].STROK) THEN
{Пара символов находятся в одной строке матрицы}
New:= New + INDEX[(ALFAVIT[Ord(SIM1)].STROK), (((ALFAVIT[Ord(SIM1)].STOLB + 4) mod 6) + 1)]
+ INDEX[(ALFAVIT[Ord(SIM2)].STROK), (((ALFAVIT[Ord(SIM2)].STOLB + 4) mod 6) + 1)]
ELSE