Автор работы: Пользователь скрыл имя, 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>}
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)].
+ INDEX[(ALFAVIT[Ord(SIM2)].
ELSE
IF (ALFAVIT[Ord(SIM1)].STOLB = ALFAVIT[Ord(SIM2)].STOLB) THEN
{Пара символов находятся в одном столбце матрицы}
New:= New + INDEX[(((ALFAVIT[Ord(SIM1)].
+ INDEX[(((ALFAVIT[Ord(SIM2)].
ELSE
{Пара символов находятся в разных строках и столбцах матрицы}
New:= New + INDEX[(ALFAVIT[Ord(SIM2)].
+ INDEX[(ALFAVIT[Ord(SIM1)].
end;
{В открытом тексте убирается спец. знак “-”}
Str:= '';
Dlina_new:= Length(New);
FOR
I:= 1 TO Dlina_new DO IF (New[I] <> '-') THEN Str:= (Str + New[I]);
DESHIFR_TXT:= Str;
END; {Конец основного блока ПФ DESHIFR_TXT}
{Начало основного блока программы}
BEGIN
ClrScr;
{Выбор шифрование или дешифрование файла}
WriteLn
('Выбери: (S)ШИФРОВАТЬ или (D)
REPEAT
K:= ReadKey;
UNTIL
(UpCase(K) = 'S') OR (UpCase(K) = 'D');
{Определение файла ввода}
{$I-}
REPEAT
Write ('Путь к файлу: ');
ReadLn (Name1);
Assign (Var_file1, Name1);
Reset (Var_file1);
UNTIL (IOResult = 0);
{$I+}
{Определение файла вывода}
REPEAT
Write ('Сохранить как: ');
ReadLn (Name2);
UNTIL (Length(Name2) <> 0);
Assign (Var_file2, Name2);
Rewrite(Var_file2);
{Обращение к ПП SHIFR_PLEYFER}
SHIFR_PLEYFER(ALFAVIT,
INDEX);
{Цикл перебора строк открытого текста}
WHILE NOT EOF(Var_file1) DO
begin
ReadLn (Var_file1, Str);
{Обращение к ПФ SHIFR_TXT либо ПФ DESHIFR_TXT}
IF UpCase(K) = 'S' THEN Str:= SHIFR_TXT(Str,
Alfavit, INDEX) ELSE Str:= DESHIFR_TXT(Str, Alfavit, INDEX);
WriteLn (Var_file2, Str);
end;
Close (Var_file2); {Закрытие файла Name2}
Close (Var_file1); {Закрытие файла Name1}
END. {Конец основного блока программы}
{test.txt} - исходный открытый текст.
ШИФР
ПЛЭЙФЕРА
МАЛЬЧИК НА КУХНЕ УКСУС НАШЕЛ.
С ЧАЙНОЙ ЧАШКОЙ К ДЕДУ ПРИШЕЛ.
ДЕДУШКА, МИЛЕНЬКИЙ, СДЕЛАЙ ГЛОТОК...
СТАРЕНЬКИЙ
ДЕДУШКА НА ПОЛ ПОТЕК.
{test.plf} - зашифрованный файл (test.txt)
РДИЫ,-СТ-И.ХЮВ
БЫСВГСТЪБ,ЮБ,ТШ,Ю,Т,ЕТЮКБЧХЧЙС
КЮНЮ.ВШЧ-ЪЕЧЭНПЛБ НФЧУФ,ЙХДРСПЮЙ
НФЧУДХБСЪБРЦПСКГЪТПЪКЮУЧВС-
КЮЦСХ.КГЪТ-ЪУЧУИЭНЮББЧ,-П-,-
{test.new} - расшифрованный файл (test.plf)
ШИФР
ПЛЭЙФЕРА
МАЛЬЧИК НА КУХНЕ УКСУС НАШЕЛ.
С ЧАЙНОЙ ЧАШКОЙ К ДЕДУ ПРИШЕЛ.
ДЕДУШКА, МИЛЕНЬКИЙ, СДЕЛАЙ ГЛОТОК...
СТАРЕНЬКИЙ
ДЕДУШКА НА ПОЛ ПОТЕК.