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

Автор работы: Пользователь скрыл имя, 03 Мая 2012 в 19:21, курсовая работа

Краткое описание

Усложнение методов и средств организации машинной обработки информации, а также широкое использование вычислительных сетей приводит к тому, что информация становится все более уязвимой.
В связи с этим защита информации в процессе ее сбора, хранения и обработки приобретает исключительно важное значение (особенно в коммерческих и военных областях).

Содержание

ЗАЩИТА ИНФОРМАЦИИ В ПЭВМ 3
КРИПТОГРАФИЧЕСКИЕ МЕТОДЫ ЗАЩИТЫ ИНФОРМАЦИИ 4
Модель одноключевой криптосистемы для передачи сообщений 5
Шифр простой подстановки. 6
Шифр перестановки (транспозиции) с фиксированным d (блок d -группа символов). 6
Шифр Вижинера 6
Шифрование с помощью датчика случайных чисел (ПСЧ) 7
ШИФР ПЛЭЙФЕРА 8
БЛОК СХЕМЫ 8
ПП SHIFR_PLEYFER 8
ПФ SHIFR_TXT 9
ПФ DESHIFR_TXT 11
ОСНОВНАЯ ПРОГРАММА 13
ПРОГРАММА 14
РЕЗУЛЬТАТЫ 18
СПИСОК ЛИТЕРАТУРЫ 19

Прикрепленные файлы: 1 файл

курсовая информатика.doc

— 555.00 Кб (Скачать документ)

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- принимает значение расшифрованной  строки, величины строка. 
 
 
 
 

Обозначения

1. Описание массивов Alfavit, INDEX.

2 .. 5 Организация по парного перебора символов строки открытого текста.

6 .. 7 Пара символов находится в одной строке матрицы алфавита Плэйфкра.

8 .. 9 Пара символов находится в одном столбце матрицы алфавита Плэйфера.

10. Пара символов находится в разных строках и столбцах матрицы алфавита Плэйфера.

11 .. 15 Из расшифрованной строки <New> создается новая строка <Str> без спец. знак “-”.

16. Присваивание ПФ DESHIFR_TXT значения новой строки <Str> 

Продолжение следует¼ 

 

Алгоритм 

    Начало ПФ DESHIFR_TXT   (Str, Alfavit, INDEX)

Описание массивов: Alfavit[255], INDEX[6, 6]

New = “,   Dlina_str = Length(Str)div 2,   I = 1

          нет

I <= Dlina_str 

SIM1 = Str[2*I - 1], SIM2 = Str[2*I]

   

I = I + 1

                                                            нет

ALFAVIT[Ord(SIM1)].STROK = ALFAVIT[Ord(SIM2)].STROK 

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)] 
 
 
 
 

                                                            нет

ALFAVIT[Ord(SIM1)].STOLB = ALFAVIT[Ord(SIM2)].STOLB 

New = New + INDEX[(((ALFAVIT[Ord(SIM1)].STROK + 4)mod 6) + 1), (ALFAVIT[Ord(SIM1)].STOLB)]

+ INDEX[(((ALFAVIT[Ord(SIM2)].STROK + 4)mod 6) + 1), (ALFAVIT[Ord(SIM2)].STOLB)] 
 
 
 

New = New + INDEX[(ALFAVIT[Ord(SIM2)].STROK), (ALFAVIT[Ord(SIM1)].STOLB)]

+ INDEX[(ALFAVIT[Ord(SIM1)].STROK), (ALFAVIT[Ord(SIM2)].STOLB)] 
 
 
 

Str = “,   Dlina_new = Length(New),   I = 1

                              нет

I <= Dlina_new 

нет    

New[I] ¹ ‘-’ 

Str = Str + New[I]

I = I + 1 
 
 
 

DESHIFR_TXT = Str

Конец ПФ DESHIFR_TXT

 
 

 

  ОСНОВНАЯ  ПРОГРАММА

Алгоритм

Начало  основного блока программы

Описание массивов: Alfavit[255], INDEX[6, 6]

Вывод: “Выберите (S)ШИФРОВАТЬ или (D)ДЕШИФРОВАТЬ”

нет    Ввод: K     

нет    

UpCase(K) = ‘S’     UpCase(K) = ‘D’    

 

Вывод: “Путь к файлу: ”

Ввод: Name1

Assign (Var_file1, Name1)

Reset (Var_file1)

нет     

IOResult = 0

Вывод: “Сохранить как: ”

Ввод: Name2

нет     

Length(Name2) ¹ 0

 

Assign (Var_file2, Name2)

ReWrite (Var_file2)

SHIFR_PLEYFER(ALFAVIT, INDEX)

                                                      нет

NOT EOF(Var_file1) 

Ввод из файла Var_file1: Str

нет     да

UpCase(K) = ‘S’ 

Str = DESHIFR_TXT(Str, ALFAVIT, INDEX)  Str = SHIFR_TXT(Str, ALFAVIT, INDEX)

Вывод в файл Var_file2: Str 
 

Close (Var_file1)

Close (Var_file2)

Конец основного блока программы

Обозначения

1. Описание массивов Alfavit, INDEX.

2 .. 5 Выбор шифрование или расшифрация файла.

6 .. 9 Определение файла ввода данных.

10 .. 13 Определение файла вывода полученных результатов.

14. Обращение к ПП SHIFR_PLEYFER(ALFAVIT, INDEX).

15 .. 16 Перебор строк из файла Var_file1.

17. Выбор действий шифрование либо расшифрация строки <Str>.

18. Обращение к ПФ DESHIFR_TXT(Str, ALFAVIT, INDEX).

19. Обращение к ПФ SHIFR_TXT(Str, ALFAVIT, INDEX).

20. Вывод результата в файл Var_file2.

21. Закрытие файлов ввода и вывода. 

 

Программа

PROGRAM SHIFR_PLEYFERA;

USES Crt;

TYPE

      path = STRING[14];

      Stroca = STRING[255];

      Simvol = array [1..6, 1..6] of CHAR;

      MATR = array [1..255] of RECORD

           STROK, STOLB: Byte;

      END;

CONST INDEX: Simvol = (('А', 'Ж', 'Б', 'М', 'Ц', 'В'),  {типизированные константы для матрицы Плэйфера}

                  ('Ч', 'Г', 'Н', 'Ш', 'Д', 'О'),

                  ('Е', 'Щ', ' , ', 'Х', 'У', 'П'),

                  (' . ', 'З', 'Ъ', 'Р', 'И', 'Й'),

                  ('С', 'Ь', 'К', 'Э', 'Т', 'Л'),

                  ('Ю', 'Я', '  ', 'Ы', 'Ф', '-'));

VAR

      Var_file1 ,Var_file2: Text;

      Name1, Name2: path;

      ALFAVIT: MATR;

      Str: Stroca;

      K: Char; 
 
 
 
 
 

{Определение  координат символов  матрицы Плэйфера}

PROCEDURE SHIFR_PLEYFER(Var ALFAVIT: MATR; INDEX: Simvol);

     VAR I, J: Byte;      {I, J - счетчики циклов}

     BEGIN      {Начало основного блока ПП SHIFR_PLEYFER}

      FOR I:= 1 TO 6 DO for J:= 1 to 6 do

      WITH ALFAVIT[Ord(INDEX[I, J])] DO

           begin

            STROK:= I;    {строка символа}

            STOLB:= J;    {столбец символа}

           end;

     END;       {Конец основного блока ПП SHIFR_PLEYFER}

 

{Производится  шифрование строки <Str> открытого текста}

FUNCTION SHIFR_TXT(Str: Stroca; Alfavit: MATR; INDEX: Simvol): Stroca;

     VAR       {Объявление переменных}

      SIM1, SIM2: Char;

      New: STRING;

      I, Dlina_str, Dlina_new: Byte;    {I - счетчик цикла} 

     BEGIN      {Начало основного блока ПФ SHIFR_TXT}

      {В  открытом тексте  вставляется спец. знак “-” между  одинаковыми символами}

      New:= '';

      Dlina_str:= Length(Str);

      FOR I:= 1 TO Dlina_str DO IF (Str[I] = Str[I+1]) THEN New:= (New + Str[I] + '-') ELSE New:= (New + Str[I]); 

      {Добавление  спец. знака “-” в конец открытого текста в случае нечетного количества символов в строке <Str>}

      IF Odd(Length(Str)) = TRUE THEN New:= New + '-'; 

      {Шифрование  открытого текста  по матрице алфавита  Плэйфера}

      Str:= '';

      Dlina_new:= Length(New)div 2;

      FOR I:= 1 TO Dlina_new DO

           begin

            SIM1:= New[2*I - 1];

            SIM2:= New[2*I];

            IF (ALFAVIT[Ord(SIM1)].STROK = ALFAVIT[Ord(SIM2)].STROK) THEN

            {Пара  символов находятся  в одной строке  матрицы}

                      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)]

            ELSE

                  IF (ALFAVIT[Ord(SIM1)].STOLB = ALFAVIT[Ord(SIM2)].STOLB) THEN

                  {Пара  символов находятся  в одном столбце  матрицы}

                            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}

 

Информация о работе Защита информации в ПЭВМ Шифр Плэйфера