РефератыИнформатика, программированиеЗаЗащита информации в ПЭВМ. Шифр Плейфера

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

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

Московский государственный Авиационный институт


(технический университет)


Кафедра 403


“алгоритмические языки и программирование”


Расчетно графическая работа


на тему



_ _


Защита информации в ПЭВМ

_


Шифр Плэйфера

_


студент гр. 04-109


ᅣ↓│￲￰│← ᅢ￳￰¥■↑○¬


Научный руководитель


Кошелькова Л.В.


Москва год


Оглавление


Защита информации в ПЭВМ 4


Криптографические методы защиты информации 5


Модель одноключевой криптосистемы для передачи сообщений 6


Шифр простой подстановки. 7


Шифр перестановки (транспозиции) с фиксированным d (блок d -группа символов). 7


Шифр Вижинера 8


Шифрование с помощью датчика случайных чисел (ПСЧ) 9


ШИФР ПЛЭЙФЕРА 10


Блок схемы 10


ПП SHIFR_PLEYFER 10


ПФ SHIFR_TXT 11


ПФ DESHIFR_TXT 13


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


Программа 16


Результаты 21


СПИСОК ЛИТЕРАТУРЫ 22


Защита информации в ПЭВМ

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


В связи с этим защита информации

в процессе ее сбора, хранения и обработки приобретает исключительно важное значение (особенно в коммерческих и военных областях).


Под защитой информации

понимается совокупность мероприятий, методов и средств, обеспечивающих решение следующих основных задач:


- проверка целостности информации;


-исключение несанкционированного доступа к ресурсам ПЭВМ и хранящимся в ней программам и данным (с целью сохранения трех основных свойств защищаемой информации: целостности, конфи­денциальности, готовности);


- исключение несанкционированного использования хранящихся в ПЭВМ программ (т.е. защита программ от копирования).


Возможные каналы утечки информации, позволяющие нарушителю получить доступ к обрабатываемой или хранящейся в ПЭВМ информации, принято классифицировать на три группы, в зависимости от типа средства, являющегося основным при получении информации. Различают 3 типа средств: человек, аппаратура, программа.


С первой группой, в которой основным средством является человек,
связаны следующие основные возможные утечки:


- чтение информации с экрана посторонним лицом;


- расшифровка программой зашифрованной информации;


- хищение носителей информации (магнитных дисков, дискет, лент и т. д.).


Ко второй группе каналов, в которых основным средством является аппаратура,
относятся следующие возможные каналы утечки:


- подключение к ПЭВМ специально разработанных аппаратных средств, обеспечивающих доступ к информации;


- использование специальных технических средств для перехвата


электромагнитных излучений технических средств ПЭВМ. В группе каналов, в которых основным средством является програм­ма
, можно выделить следующие возможные каналы утечки:


- несанкционированный доступ программы к информации;


- расшифровка программой зашифрованной информации;


- копирование программой информации с носителей.


Будем рассматривать средства защиты, обеспечивающие закрытие возможных каналов утечки, в которых основным средством является программа. Заметим, что такие средства в ряде случаев позволяют доста­точно надежно закрыть некоторые возможные каналы утечки из других групп. Так, криптографические средства позволяют надежно закрыть канал, связанный с хищением носителей информации.


Обзор методов защиты информации


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


Средства защиты можно подразделить на следующие категории:


1. - средства собственной защиты;


2. - средства защиты в составе вычислительной системы;


3. - средства защиты с запросом информации;


4. - средства активной защиты;


5. - средства пассивной защиты.


Классификация средств защиты информации




Средства защиты информации



















Собственной защиты


В составе ВС


С запросом информации


Актив


ные


Пассивные


- документация


- машинный код


- сопровождение


- авторское право


- заказное проектирование


- защита магнитных дисков


- специальная аппаратура


- замки защиты


- изменения функций


- пароли


- шифры


- сигнатура


- аппаратура защиты (ПЗУ, преобразователи) генератор случайных чисел


- замки защиты


(время, данные)


- искаженные программы


(программы


вирусы, искажение функций)


- сигнал тревоги


- запуск по ключам


- авторская эстетика


- идентификация программ


- частотный анализ


- корреляционный анализ


- «родимые пятна»


- устройство контроля



Наиболее надежными являются криптографические методы защиты информации, относящиеся к классу средств защиты с запросом информа­ции.


Криптографические методы защиты информации

1. Основные определения


Криптология (от греческих корней: cryptos-тайный и logos-слово) как научная дисциплина оформилась в 1949 г. с появлением работы Шеннона, в которой устанавливалась связь криптологии с теорией информации. Криптология включает два направления: криптографию и криптоанализ. Задача криптографа - обеспечить как можно большие секретность и аутентичность (подлинность) передаваемой информации. Криптоаналитик, напротив, "взламывает " систему защиты, пытаясь раскрыть зашифрован­ный текст или выдать поддельное сообщение за настоящее.


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


Чтобы скрыть смысл передаваемых сообщений применяются два ти­па преобразований: кодирование и шифрование. Для кодирования исполь­зуется кодировочные книги и таблицы, содержащие наборы часто исполь­зуемых фраз, каждой из которых соответствует кодовое слово. Для деко­дирования используется такая же книга.


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


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


Процесс передачи сообщений использует 2 алгоритма: шифрования E-Encipherment и дешифрования D-Decipherment, в которых для преобра­зования используется ключ К.


Ключ - конкретное секретное состояние некоторых параметров ал­горитма криптографического преобразования данных, обеспечивающее выбор одного варианта из совокупности всевозможных для данного алгоритма.


Имитовставка - это последовательность данных фиксированной длины, полученная по определенному правилу из открытых данных и ключа, которая используется для защиты от навязывания ложных данных.


Криптостойкостью называется характеристика шифра, определяю­щая его стойкость к дешифрованию, которая обычно определяется необхо­димым для этого периодом времени.


Криптосистемы с закрытым ключом (одноключевые)


Модель одноключевой криптосистемы для передачи сообщений

санкционированный получатель


Х У = Ек(Х) Х= Dк(У)


исходный


текст R К К


защищенный


канал связи для передачи ключа.


Источник сообщения передает "открытый текст" X, а рандомизатор формирует рандомизируюшую последовательность R. Задача рандомизатора состоит в том, чтобы выровнять частоты появления символов источ­ника сообщения путем перехода к алфавиту большего объема. Источник ключа генерирует некоторый ключ К, а шифратор преобразует открытый текст Х в шифротекст (криптограмму), который является некоторой функцией X, а конкретный вид криптограммы определяется секретным ключом и рандомизирующей последовательностью.


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


Дешифратор санкционированного получателя, зная секретный ключ, восстанавливает открытый текст.


При разработке практических шифров используются два принципа, которые выделил Шеннон: рассеивание и перемешивание. Рассеиванием он назвал распространение влияния одного знака открытого текста на множество знаков шифротекста, что позволяет скрыть статистические свойства открытого текста. Под перемешиванием Шеннон понимал ис­пользование таких шифрующих преобразований, которые усложняют восстановление взаимосвязи статистических свойств открытого и шифро­ванного текста. Однако шифр должен не только затруднять раскрытие, но и обеспечивать легкость шифрования и дешифрования при известном секретном ключе. Поэтому была принята идея использовать произведение простых шифров, каждый из которых вносит небольшой вклад в значи­тельное суммарное рассеивание и перемешивание. Рассмотрим примеры шифрования.


Шифр простой подстановки.

Это простейший метод шифрования, его называют также моноалфа­витной подстановкой. Ключом является переставленный алфавит, буквами которого заменяют буквы нормального алфавита. Например, каждая буква заменяется на букву, стоящую на 3 позиции впереди: A®D, B®E и т.д. Тогда текст АВС заменяется на DEF. Все моноалфавитные подстановки можно представить в виде:


Y, = а хi + b( mod g),


а - некоторый постоянный десятичный коэффициент;


b - коэффициент сдвига;


g - длина используемого алфавита;


хi -i-й символ открытого текста (номер буквы в алфавите). Основным недостатком рассмотренного метода является то, что статистические свойства открытого текста (частоты повторения букв) сохраняются и в шифротексте.


Шифр перестановки (транспозиции) с фиксированным d (блок d -группа символов).

Это блочный метод. Текст делят на блоки и в каждом производится перестановка символов открытого текста. Правило перестановки задается секретным ключом. Пусть перестановка задается таблицей:


123456


316524


Тогда открытый текст преобразуется в закодированный так: первый символ становится вторым, второй - пятым и так далее










MICROC


OMPUTE


R - открытый текст


CMCOIR


POETMU


R - закодированный текст



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


Шифр Вижинера

Шифр, задаваемый формулой


уi = хi + ki(mod g),


где ki - i-я буква ключа, в качестве которого используется слово или фраза, называется шифром Вижинера
. Воспользуемся таблицей кодирования букв русского алфавита:


























































Буква


А


Б


В


Г


Д


Е


Ж


3


И


И


К


Л


Код


01


02


03


04


05


06


07


08


09


10


11


12


Буква


М


Н


О


П


Р


С


Т


У


Ф


X


Ц


Ч


Код


13


14


15


16


17


18


19


20


21


22


23


24

























Буква


Ш


Щ


Ъ


Ы


Ь


Э


Ю


Я


(пробел)


Код


25


26


27


28


29


30


31


32


33



Пусть имеется открытый текст "ЗАМЕНА" и подстановка шифра Вижинера задана таблицей:
















3


А


М


Е


Н


А


К


Л


Ю


Ч


К


Л



По формуле шифра Вижинера находим:


Y1= 8 + ll (mod33) = 19 Ю T;


Y2= l + 12 (mod33) = 13 Ю M;


Y3= 13 + 31 (mod 33) = 11 Ю К;


Y4= 6 + 24 (mod 33) = 30 Ю Ю;


Y5= 14 + 11 (mod 33) = 25 Ю Ш;


Y6 = 1 + 12 (mod 33) = 13 Ю М.


Шифротекст: "ТМКЭШМ".


Шифры Бофора
используют формулы:


yi = ki - xi(mod g) и


yi = Xi - ki(mod g).


Гомофоническая замена одному символу открытого текста ставит в соответствие несколько символов шифротекста. Этот метод применяется для искажения статистических свойств текста.


Шифрование с помощью датчика случайных чисел (ПСЧ)

Это довольно распространенный криптографический метод, прин­цип которого заключается в генерации гаммы шифра с помощью датчика ПСЧ и наложении полученной гаммы на открытые данные обратимым образом (например, при использовании логической операции "исключающее ПЛИ").


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


На основе теории групп разработано несколько типов датчиков ПСЧ. Наиболее доступны и эффективны конгруэнтные генераторы ПСЧ. Напри­мер, линейный конгруэнтный датчик ПСЧ вырабатывает последовательно­сти псевдослучайных чисел T(i), описываемые соотношением


T(i+l) = [AT(i) + C]mod M,


Где А и С - константы; Т(0) - исходная величина, выбранная в качестве порождающего числа.


Такой датчик ПСЧ генерирует псевдослучайные числа с определен­ным периодом повторения, зависящим от выбранных значений А и С. Значение М обычно устанавливается равным 25, где b - длинна слова ЭВМ в битах.


Одноключевая модель использует для шифрования и дешифрования один и тот же секретный ключ, кот

орый должен быть неизвестен криптоаналитику противника. Поэтому такая система называется одноключевой криптосистемой с секретными ключами. Проблема распространения этих секретных ключей является одной из главных трудностей при практиче­ском использовании такой криптосистемы. Для распространения секрет­ных ключей требуются защитные каналы связи. Стоимость и сложность распространения этих ключей оказываются очень большими.


ШИФР ПЛЭЙФЕРА
Блок схемы
ПП SHIFR_PLEYFER

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



SHIFR_PLEYFER(Alfavit, INDEX)



Список формальных параметров:


Alfavit, INDEX


Входные параметры:


INDEX - матрица символов Плэйфера, величина символьная.


Выходные параметры:


Alfavit - хранит координаты символов матрицы Плэйфера, величины целого типа.


Алгоритм



Начало ПП SHIFR_PLEYFER (Alfavit, INDEX)



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



I = 1



нет


I <= 6



J = 1



нет


J <= 6



Alfavit[Ord(INDEX[I, J])].Strok = I


Alfavit[Ord(INDEX[I, J])].Stolb = J



J = J + 1


I = I + 1



Конец ПП SHIFR_PLEYFER


Обозначения


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


2 .. 5, 7, 8 Организация цикла заполнения массива Alfavit типа запись


6. Определение строк и столбов для символов матрицы INDEX


ПФ SHIFR_TXT

ПФ SHIFR_TXT
производит шифрование строки открытого текста.



SHIFR_TXT(Str, Alfavit, INDEX)


Список формальных параметров:


Str, Alfavit, INDEX


Входные параметры:


Str - строка открытого текста, величина строка.


Alfavit - хранит координаты символов матрицы Плэйфера, величины целого типа.


INDEX - матрица символов Плэйфера, величина символьная.


Выходные параметры:


SHIFR_TXT - принимает значение зашифрованной строки, величины строка.


Обозначения


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


2 .. 7 В открытом тексте вставляется “-”между одинаковыми символами.


8 .. 9 Добавление “-” в конец открытого текста, в случае нечет. кол-ва символов в строке .


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


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


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


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


19. Присваивание ПФ SHIFR_TXT значения новой строки


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


Алгоритм


Начало ПФ 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
производит расшифрацию строки открытого текста.



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 Из расшифрованной строки создается новая строка без спец. знак “-”.


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


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


Алгоритм


Начало ПФ 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. Выбор действий шифрование либо расшифрация строки .


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}


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


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


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


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}


{Производится расшифрация строки }


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


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


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


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


ELSE


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


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


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


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)


ШИФР ПЛЭЙФЕРА


МАЛЬЧИК НА КУХНЕ УКСУС НАШЕЛ.


С ЧАЙНОЙ ЧАШКОЙ К ДЕДУ ПРИШЕЛ.


ДЕДУШКА, МИЛЕНЬКИЙ, СДЕЛАЙ ГЛОТОК...


СТАРЕНЬКИЙ ДЕДУШКА НА ПОЛ ПОТЕК.


СПИСОК ЛИТЕРАТУРЫ

1. Защита информации в персональных ЭВМ/ А.В.Спесивцев, В.А.Вегнер, А.Ю.Крутяков и др. - М.: Радио и связь, МП 'Веста',1993.


2. 3ащита программного обеспечения: Перевод с английского./ Под редакцией Д.Гроувера. - М.: Мир 1992.


3. Рощин Б.В.Элементы криптозащиты информации: Учебное пособие. - М.: Издательство МАИ, 1995.


4. А.В.Петраков. Защита и охрана личности, собственности, информации: Справное пособие. - М.: Радио и связь, 1997.


И

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:3795
Символов:37151
Размер:72.56 Кб.