Защита информации в ПЭВМ. Шифр Плейфера — страница 7

  • Просмотров 6392
  • Скачиваний 424
  • Размер файла 31
    Кб

большими. ШИФР ПЛЭЙФЕРА Блок схемы ПП SHIFR_PLEYFER ПП SHIFR_PLEYFER для определения координат символов матрицы Плэйфера. SHIFR_PLEYFER(Alfavit, INDEX) Список формальных параметров: Alfavit, INDEX Входные параметры: INDEX - матрица символов Плэйфера, величина символьная. Выходные параметры: Alfavit - хранит координаты символов матрицы Плэйфера, величины целого типа.   Алгоритм Начало ПП SHIFR_PLEYFER (Alfavit, INDEX) Описание массивов: Alfavit[255], INDEX[6, 6] I = 1 нет J = 1 нет Alfavit[Ord(INDEX[I,

J])].Stolb = J J = J + 1 Конец ПП SHIFR_PLEYFER Обозначения 1. Описание массивов Alfavit, INDEX 2 .. 5, 7, 8 Организация цикла заполнения массива Alfavit типа запись 6. Определение строк и столбов для символов матрицы INDEX ПФ SHIFR_TXT ПФ SHIFR_TXT производит шифрование строки <Str> открытого текста. SHIFR_TXT(Str, Alfavit, INDEX) Список формальных параметров: Str, Alfavit, INDEX Входные параметры: Str - строка открытого текста, величина строка. Alfavit - хранит координаты символов матрицы

Плэйфера, величины целого типа. INDEX - матрица символов Плэйфера, величина символьная. Выходные параметры: SHIFR_TXT - принимает значение зашифрованной строки, величины строка. Обозначения 1. Описание массивов Alfavit, INDEX. 2 .. 7 В открытом тексте вставляется “-”между одинаковыми символами. 8 .. 9 Добавление “-” в конец открытого текста, в случае нечет. кол-ва символов в строке <Str>. 10 .. 13 Организация по парного перебора символов строки

открытого текста. 14 .. 15 Пара символов находится в одной строке матрицы алфавита Плэйфкра. 16 .. 17 Пара символов находится в одном столбце матрицы алфавита Плэйфера. 18. Пара символов находится в разных строках и столбцах матрицы алфавита Плэйфера. 19. Присваивание ПФ SHIFR_TXT значения новой строки <New> Продолжение следует¼ Алгоритм Начало ПФ SHIFR_TXT (Str, Alfavit, INDEX) Описание массивов: Alfavit[255], INDEX[6, 6] New = “, Dlina_str = Length(Str), I = 1 нет I <= Dlina_str да

нет Str[I] = Str[I + 1] New = ( New + Str[I] + ‘-’ ) New = ( New + Str[I] ) I = I + 1 нет Odd(Length(Str)) = TRUE New = New + ‘-’ Str = “, Dlina_new = Length(New)div 2, I = 1 нет I <= Dlina_new SIM1 = New[2*I - 1], SIM2 = New[2*I] SHIFR_TXT = Str I = I + 1 Конец ПФ SHIFR_TXT нет ALFAVIT[Ord(SIM1)].STROK = ALFAVIT[Ord(SIM2)].STROK Str = Str + INDEX[(ALFAVIT[Ord(SIM1)].STROK), ((ALFAVIT[Ord(SIM1)].STOLB mod 6) + 1)] + INDEX[(ALFAVIT[Ord(SIM2)].STROK), ((ALFAVIT[Ord(SIM2)].STOLB mod 6) + 1)] нет ALFAVIT[Ord(SIM1)].STOLB = ALFAVIT[Ord(SIM2)].STOLB 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)] Str = Str +

INDEX[(ALFAVIT[Ord(SIM2)].STROK), (ALFAVIT[Ord(SIM1)].STOLB)] + INDEX[(ALFAVIT[Ord(SIM1)].STROK), (ALFAVIT[Ord(SIM2)].STOLB)] ПФ DESHIFR_TXT ПФ DESHIFR_TXT производит расшифрацию строки <Str> открытого текста. DESHIFR_TXT(Str, Alfavit, INDEX) Список формальных параметров: Str, Alfavit, INDEX Входные параметры: Str - строка открытого текста, величина строка. Alfavit - хранит координаты символов матрицы Плэйфера, величины целого типа. INDEX - матрица символов Плэйфера, величина символьная. Выходные параметры: DESHIFR_TXT- принимает