* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
10
Московский государственный Авиаци онный институт
(технический унив ерситет )
Кафедра 403
“алгоритмические языки и про граммирование”
Расчетно графическая работа
на тему
Защита информации в ПЭВМ
Шифр Плэйфера
студент гр . 04-109
Дмитрий Гу ренков
Научный руководит ель
Кошелькова Л.В.
Москва 2015 год
Оглавление
Защита информации в ПЭВМ
Криптографические методы защиты и нформации
Модель одноключевой криптосистемы для передачи сообщений
Шифр простой подстановки.
Ши фр перестановки (транспозиции ) с фиксированным d (блок d -груп па символов ).
Шифр Вижинера
Шифрование с помощью датчика случайных чисел (ПСЧ )
ШИФР ПЛЭЙФЕРА
Блок схемы
ПП SHIFR _ PLEYFER
ПФ SHIFR _ TXT
ПФ DESHIFR _ TXT
ОСНОВНАЯ ПРОГРАММА
Програ мма
Результаты
СПИСОК ЛИТЕРАТУР Ы
Защита инфор мации в ПЭВМ
Усложнение методов и средств орг анизации машинной обработки информации , а так же широкое использование вычислительных сетей приводит к тому , что информация становится все более уязвимой.
В связи с этим защита информации в процессе ее сбора , хранения и обработки приобретает исключительно важное значение (особенно в коммерческих и военных областях ).
Под защи той информации понимается совоку пность мероприятий , методов и средств , обеспеч ивающих решение следующих основных задач :
- проверк а целостности информации ;
-исключение несанкционированного доступа к ресурсам ПЭВМ и хранящимся в ней прогр аммам и данным (с целью сохранения трех основных свойств защищаемой информации : целостн ости , конфи денциальности , готовности );
- исключение несанкцио нированного исполь зования хранящихся в ПЭВМ программ (т.е . за щита программ от копирования ).
Возможные каналы утечки информации , позво ляющие нарушителю получить доступ к обрабатыв аемой или хранящейся в ПЭВМ информации , пр инято классифицировать на три группы , в зависимости от типа средства , являющегося основным при получении информации . Различают 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_TX T - принимает значение зашифрованной строки , величины строка.
Обозначения
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)]
+ I NDEX[(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. Обра щение к ПФ D ESHIFR_TXT(Str, ALFAVIT, INDEX).
19. Обращение к ПФ SHIFR_TXT(Str, ALFAVIT, INDEX).
20. Вывод результата в файл Var_file2.
21. Закрытие файлов ввода и вывода.
Программа
PROGRAM SHIFR_PLEYFERA ;
USES Crt;
TYPE
pat h = 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)]
ELS E
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[(AL FAVIT[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.