Автор работы: Пользователь скрыл имя, 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
Str = Str + INDEX[((ALFAVIT[Ord(SIM1)].
+ INDEX[((ALFAVIT[Ord(SIM2)].
Str = Str + INDEX[(ALFAVIT[Ord(SIM2)].
+ INDEX[(ALFAVIT[Ord(SIM1)].
ПФ 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)].
+ INDEX[(ALFAVIT[Ord(SIM2)].
ALFAVIT[Ord(SIM1)].STOLB
= ALFAVIT[Ord(SIM2)].STOLB
New = New +
INDEX[(((ALFAVIT[Ord(SIM1)].
+ INDEX[(((ALFAVIT[Ord(SIM2)].
New = New +
INDEX[(ALFAVIT[Ord(SIM2)].
+ INDEX[(ALFAVIT[Ord(SIM1)].
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)].
+ INDEX[(ALFAVIT[Ord(SIM2)].
ELSE
IF (ALFAVIT[Ord(SIM1)].STOLB = ALFAVIT[Ord(SIM2)].STOLB) THEN
{Пара символов находятся в одном столбце матрицы}
Str:= Str + INDEX[((ALFAVIT[Ord(SIM1)].
+ INDEX[((ALFAVIT[Ord(SIM2)].
ELSE
{Пара символов находятся в разных строках и столбцах матрицы}
Str:= Str + INDEX[(ALFAVIT[Ord(SIM2)].
+ INDEX[(ALFAVIT[Ord(SIM1)].
end;
SHIFR_TXT:= Str;
END; {Конец основного блока ПФ SHIFR_TXT}