Программная реализация криптографического алгоритма RSA

Структурная схема защиты информации в ЛВС. Потенциальные угрозы безопасности информации и средства ее защиты. Шифрование трафика сети. Практическая реализация алгоритма и постановка задачи. Описание состава программных средств и модулей программы.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 26.04.2010
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

btn_About:

Caption - «О программе»;

btn_CryptFileOpen:

Caption - «Открыть файл для шифровки»;

btn_Decrypt:

Caption - «Декодировать»;

btn_DecryptFileOpen:

Caption - «Открыть файл для расшифровки»;

btn_Encrypt:

Caption - «Кодировать»;

btn_Exit:

Caption - «Выход»;

btn_KeyGenerate:

Caption - «Генерация ключа»;

btn_SaveToFile:

Caption - «Сохранить»;

Enabled - False;

Свойство Enabled всех компонентов Edit, кроме ed_number1 и ed_number2, изменены на False, а свойство Text - на пустую строку. На этапе шифрования они служат лишь для вывода информации о ключах. Компоненты ed_number1 и ed_number2 служат для ввода двух случайных чисел, на основе которых находятся два ближайших простых числа и генерируются открытый и секретный ключи.

Компоненты Label служат для пояснения назначения каждого из расположенных на форме компонентов. Их свойств Caption изменено следующим образом: lbl_BlockLength - «Длина блоков», lbl_phi - «phi = (p-1) * (q-1)», lbl_PrivateKey - «Секретный ключ (d)», lbl_PublicKey - «Открытый ключ (e)», lbl_ScrambledMessage - «Зашифрованное сообщение», lbl_SimpleNumbers - «Случайные числа», lbl_SourceMessage - «Исходное сообщение».

Свойство Enabled компонентов mem_Cipher и mem_Decrypt было изменено на False.

Свойство Filter компонентов OpenDialog1 и OpenDialog2 было изменено следующим образом: «Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*», а свойство FilterIndex обоих компонентов было установлено в значение 1, что в соответствии со свойством Filter обозначает открытие текстовых файлов по умолчанию.

Программный код первого модуля приведен в приложении 4.

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

Заголовок Caption формы второго модуля изменен на «О программе…», а свойство Visible установлено в значение False. Все компоненты списка свойства BorderIcons установлены в значение False.

На форме расположены компоненты btn_OK со свойством Caption «ОК» (служит для закрытия окна «О программе»), а также восемь компонентов Label, содержащих информацию о программном продукте. Их свойства Caption изменены соответствующим образом.

Внешний вид формы «О программе» представлен на рис. 4.

Рис. 4. Внешний вид формы «О программе»

Программный код второго модуля приведен в приложении 4.

2.4 Состав проекта

Таблица 2 Состав проекта

Наименование

Обозначение

Примечание

RSA.exe

Исполнимый файл

-

RSA.dof

Файл параметров проекта

Содержит текущие установки проекта.

RSA.dpr

Файл проекта

Связывает все файлы, составляющие приложение

RSA.cfg

Файл конфигурации проекта

Содержит установки конфигурации проекта

Наименование

Обозначение

Примечание

RSA.res

Файл ресурсов

Содержит пиктограммы, графические изображения и другие ресурсы, используемые в проекте

Unit1.pas
Unit2.pas

Файлы программных модулей для форм

Определяет функциональность формы

Unit1.dfm
Unit2.dfm

Файл формы

Содержит список свойств всех компонентов, включенных в форму

Unit1.dcu
Unt2.dcu

Объектный файл для Unit1.pas, Unit2.pas

Откомпилированная версия Unit.pas

2.5. Описание программы

Программная реализация криптографического алгоритма RSA разработана под операционную систему Windows 98/Me/2000/XP.

Программа написана на объектно-ориентированном языке программирования высокого уровня Delphi 7.0.

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

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

Модуль содержит следующие процедуры.

Кнопка btn_About запускает процедуру «procedure TForm1.btn_AboutClick (Sender: TObject);». Данная процедура делает видимой форму Form2, на которой расположена краткая информация о программе.

Кнопка btn_CryptFileOpen активирует процедуру «procedure TForm1.btn_CryptFileOpenClick (Sender: TObject);», которая запускает диалоговое окно открытия файла для шифрования. В случае открытия текстового файла его содержимое будет выведено в текстовом поле mem_Encrypt. Кроме открытия файла, данная процедура делает доступными кнопки кодирования (btn_Encrypt) и генерации ключей (btn_KeyGenerate), очищает содержимое полей mem_Cipher и mem_Decrypt, если в них уже находился какой-либо текст, и очищает поля для ввода чисел и вывода сгенерированных ключей, вызывая процедуру «procedure Clear (Sender: TObject);».

Кнопка btn_Decrypt вызывает процедуру «procedure TForm1.btn_DecryptClick (Sender: TObject);». Данная процедура запускает процесс расшифровки файла, который должен быть предварительно открыт. Расшифровка требует ввода пары чисел, составляющих секретный ключ. Для этого предназначены поля ввода ed_n и ed_PrivateKey, которые становятся доступными после открытия файла для расшифровки. Если не введено хотя бы одно число из этой пары, программа выдает сообщение об ошибке.

Кнопка btn_DecryptFileOpen запускает процедуру открытия файла для расшифровки «procedure TForm1.btn_DecryptFileOpenClick (Sender: TObject);». Данная процедура выводит диалоговое окно открытия файла, подобное изображенному на рис. 6. Кроме того, она выполняет очистку текстовых полей mem_Encrypt и mem_Decrypt, делает недоступными кнопки кодирования (btn_Encrypt) и генерации ключей (btn_KeyGenerate), свойство кнопки дешифрования (btn_Decrypt) устанавливает в значение True и очищает поля для ввода чисел и ключей процедурой «procedure Clear (Sender: TObject);». Свойство PasswordChar компонентов ed_n и ed_PrivateKey, служащих для ввода чисел, составляющих секретный ключ, устанавливается в «#». Это делается затем, чтобы невозможно было подсмотреть секретный ключ во время его ввода пользователем. Кнопка btn_Encrypt активирует процедуру «procedure TForm1.btn_EncryptClick (Sender: TObject);». Эта процедура запускает процесс шифрования файла сгенерированными ключами. Генерация ключей производится на основе двух введенных пользователем простых чисел. Если введенные числа не позволяют рассчитать секретный ключ, выводится сообщение об ошибке.

Кнопка btn_Exit активирует процедуру «procedure TForm1.btn_ExitClick (Sender: TObject);», которая производит завершение работы приложения. Завершить работу программы можно также щелкнув по кнопке закрытия окна в заголовке главной формы.

Кнопка btn_KeyGenerate запускает процедуру «procedure TForm1.btn_KeyGenerateClick (Sender: TObject);», которая генерирует секретный и открытый ключи на основе введенных пользователем в поля ввода ed_number1 и ed_number2 случайных чисел. Если числа не введены, программа выводит сообщение об ошибке. Сгенерированные ключи отображаются в соответствующих компонентах Edit. Открытый ключ e отображается компонентом ed_PublicKey, закрытый - ed_PrivateKey. Число n из пары, составляющей ключ, находится в поле ed_n. Остальные поля предназначены для вывода дополнительной информации.

Кнопка btn_SaveToFile запускает процедуру «procedure TForm1.btn_SaveToFileClick (Sender: TObject);». Данная процедура открывает диалоговое окно сохранения файла. Кнопка btn_SaveToFile становится доступной только в том случае, если текстовое поле mem_Cipher содержит какую-либо информацию, то есть если в этом поле содержится зашифрованная информация, которую можно сохранить в файл.

Помимо вышеперечисленных процедур, модуль Unit1 включает также следующие процедуры и функции:

«procedure Clear (Sender: TObject);» - производит очистку полей ввода чисел и ключей, а также дополнительной информации о ходе их генерации. Обнуляет ключи.

«function MemodN (m, e, n: int64): longword;» - реализует процесс кодирования числовых блоков по формуле C(i) = M(i)e mod n и раскодирование по формуле M(i) = C(i)d mod n.

«function CodeAlgoritm (CodeText: String; se, sn: LongWord): string;» - разбивает сообщения на блоки, преобразует их в числовое представление и передает работу функции MemodN.

Тексты вышеперечисленных процедур и функций находятся в приложении 4.

Модуль Unit2 содержит кнопку btn_OK, а также восемь компонентов Label, содержащих справочную информацию о приложении. Кнопка btn_OK устанавливает свойство Visible формы Form2 в значение False, тем самым закрывая окно «О программе». Текст соответствующей процедуры приведен в приложении 4. Для полноценного функционирования программы необходим персональный компьютер с центральным процессором класса Pentium 600 MMX, имеющий не менее 32 Мб оперативной памяти. При увеличении чисел, на основе которых генерируются ключи, может потребоваться процессор, обладающий большей производительностью, поскольку время генерации ключей обратно пропорционально производительности процессора. Мелким и средним предприятиям и частным лицам рекомендуется использовать ключи длиной от 56 до 96 бит, так как им не требуется обеспечение секретности на несколько лет вперед.

Для запуска программы необходимо вставить носитель информации в соответствующее устройство чтения (накопитель на гибких магнитных дисках), скопировать исполняемый файл «RSA.exe» в отдельную папку на жестком диске и произвести двойной щелчок левой кнопкой мыши по исполняемому файлу. После запуска приложения на экран выводится главное окно, представленное на рис. 5. Для генерации ключей необходимо ввести два случайных числа в поля, расположенные возле пояснительной надписи «Случайные числа», и нажать кнопку «Генерация ключа». В том случае, если хотя бы одно число не будет введено, программа выдаст сообщение об ошибке и ключи сгенерированы не будут.

Рис. 5. Главное окно приложения

После успешной генерации ключей они будут выведены в соответствующие поля. При этом пара чисел e и n будет являться открытым ключом, а пара d и n - секретным. Пользователь может распространить открытый ключ, разослав его другим пользователям, от которых он желает получать зашифрованные сообщения и файлы. Секретный ключ d необходимо сохранить в тайне - он будет использоваться исключительно для расшифровки.

Для того, чтобы зашифровать файл, необходимо нажать на кнопку «Открыть файл для шифровки» и в появившемся диалоговом окне «Открыть» (см. рис. 6) выбрать необходимый файл. В случае необходимости шифрования текстовых сообщений можно воспользоваться текстовым полем «Исходное сообщение», набрав в нем нужный текст.

Рис. 6. Диалоговое окно открытия файла

Для шифрования введенного текста или открытого файла требуется нажать кнопку «Кодировать». Результат работы алгоритма шифрования будет выведен в текстовом поле «Зашифрованное сообщение». Если процесс генерации ключей не был завершен успешно, то при попытке шифрования будет выведено сообщение об ошибке и процесс кодирования прервется.

После того, как информация будет зашифрована, станет доступной кнопка «Сохранить», которая позволяет сохранить зашифрованную информацию в отдельный файл. При нажатии этой кнопки открывается диалоговое окно «Сохранить как» (см. рис. 7). От пользователя требуется ввести имя файла и путь, по которому он будет сохранен на носителе информации. В том случае, если такой файл уже существует, будет выдано соответствующее сообщение и предложение заменить уже существующий файл новым. Для расшифровки файла, который был ранее зашифрован, необходимо нажать на кнопку «Открыть файл для расшифровки» и в диалоговом окне открытия файла (см. рис. 6) выбрать зашифрованный файл. Содержимое текстовых файлов в данном случае будет выведено в верхней части поля «Зашифрованное сообщение».

Рис. 7. Диалоговое окно сохранения файла

Процедура расшифровки открытого ранее файла требует ввода числа n и секретного ключа d, которые должны были быть сохранены после генерации ключей. Каждый вводимый при этом символ будет отображаться на экране в виде символа «#», поскольку в этом случае сводится к минимуму угроза подглядывания секретного ключа посторонним лицом при вводе.

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

При нажатии на кнопку «О программе» на экран будет выведено одноименное окно, на котором представлена краткая информация о программе (см. рис. 8).

Рис. 8. Окно «О программе…»

Для завершения работы приложения необходимо либо нажать кнопку «Выход», либо щелкнуть мышью по кнопке закрытия главного окна в его заголовке.

Во время работы программы возможно появление следующих сообщений.

Рис. 9. Сообщение об ошибке в процессе генерации ключей

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

Если пользователем введены числа, по которым нельзя рассчитать секретный ключ d, будет выведено сообщение, проиллюстрированное на рис. 10.

Рис. 10. Сообщение об ошибке при расчете секретного ключа

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

Рис. 11. Сообщение об ошибке в процессе дешифрования

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

Заключение

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

- массовость применения;

- постоянно растущая сложность функционирования;

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

Следует отметить, что использование внешних носителей информации создает условия для злоумышленных действий (подмена, хищение, внесение в систему “компьютерного вируса”, несанкционированное копирование информации, незаконное использование сети ЭВМ и др.).

Важнейшая мера защиты информации на этом направлении - четкая организация и контроль использования носителей информации.

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

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

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

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

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

Библиографический список

ГОСТ 28147-89. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. М.: ГК СССР по стандартам, 1989

Стенг Д., Мун С. Секреты безопасности сетей. - Киев: Диалектика, 1995

Жельников В. Криптография от папируса до компьютера. - М.: ABF, 1997

Мельников В.В. Защита информации в компьютерных системах. - М, 1997.

Осовецкий Л. Построение средств межсетевой защиты информации. - НТЦ «Критические Информационные Технологии», 1997

Организация и современные методы защиты информации (под общ. ред Диева С.А., Шаваева А.Г.) - М, 1998

Прокопьев И.В., Шрамков И.Г., Щербаков А.Ю. Введение в теоретические основы компьютерной безопасности : Уч. пособие. М., 1998

Брассар Ж. Современная криптология: Пер. с англ. - М., Издательско-полиграфическая фирма ПОЛИМЕД, 1999

Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях - М.: Радио и связь, 1999

Белкин П.Ю., Михальский О.О., Першаков А.С. Программно-аппаратные средства обеспечения информационной безопасности. Защита программ и данных: Учеб. пос. для вузов, М.: Радио и связь, 1999

Анин Б.Ю. Защита компьютерной информации. - СПб.: БХВ - Санкт-Петербург, 2000

Зегжда Д.П.,Ивашко А.М. Основы безопасности информационных систем - М.: «Горячая линия - Телеком», 2000

Анин Б.Ю. Защита компьютерной информации. - СПб.: БХВ - Санкт-Петербург, 2000

Молдовян А.А., Молдовян Н.А., Советов Б.Я. Криптография. Спб.: «Лань», 2000

Романец Ю.В., Тимофеев П.А., Шаньгин В.Ф. Защита информации в компьютерных системах и сетях / Под ред. В.Ф. Шаньгина. - 2-е изд., перераб. и доп. - М.: Радио и связь, 2001

Алферов А.П., Зубов А.Ю., Кузьмин А.С. Черемушкин А.В. Основы криптографии: Учебное пособие - М.: Гелиос, 2001

Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной криптографии. М.: «Горячая линия - Телеком», 2001

Б. Шнайер, Прикладная криптография - М.: Издательство ТРИУМФ, 2002.

Архангельский А. Я. Delphi7. Справочное пособие, - М: ЗАО «Издательство БИНОМ», 2003

Партыка Т.Л., Попов И.И.Информационная безопасность. Учебное пособие для студентов учреждений среднего профессионального образования.-- М.: ФОРУМ: ИНФРА-М, 2004.

Корт С.С. Теоретические основы защиты информации: Учебное пособие. - М.: Гелиос АРВ, 2004

Смирнова Г.Н. Проектирование экономических информационных систем: Учебник/ Г.Н.Смирнова, А.А.Сорокин, Ю.Ф.Тельнов; Под ред. Ю.Ф.Тельнова - М.: Финансы и статистика, 2001

Фаронов В.В. Delphi - программирование на языке высокого уровня:Учебник для вузов - СПб.: Питер, 2005

http://kiev-security.org.ua

http://nsa.by.ru/docs/security/

http://www.citforum.ru/internet/securities/

Приложение 1.

Угрозы безопасности информации в компьютерных системах

ТИП УГРОЗЫ

ПРИЧИНЫ ИЛИ ПОБУДИТЕЛЬНЫЕ МОТИВЫ

Преднамеренные
угрозы

Непреднамеренные
угрозы

Хищение носителей информации

-

Стремление использовать конфиденциальную информацию в своих целях

Применение программных ловушек

-

Те же

-

Неисправность аппаратуры, которая может инициировать несанкционированное считывание информации

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

Использование программ типа «троянский конь»

-

Нанесение ущерба путем несанкционированного доступа в систему

Ошибки в программах обработки информации

-

Нанесение ущерба путем внесения программных закладок в процессе разработки программных систем

Внедрение компьютерного вируса

-

Разрушение информационной системы в целях нанесения ущерба

-

Ошибки в программах обработки информации

Применение несертифицированного программного продукта

-

Внедрение компьютерного вируса

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

Ошибочная коммутация в сети ЭВМ

-

В целях создания канала для утечки конфиденциальной информации

-

Ошибочная коммутация в сети ЭВМ

Низкая квалификация обслуживающего персонала

-

Паразитное электромагнитное излучение (ЭМИ)

Недостаточный учет требований безопасности на этапе проектирования информационной системы или ее создания

-

Перекрестные наводки за счет ЭМИ

Те же

Принудительное электромагнитное облучение

-

Вывод из строя информационной системы в целях нанесения ущерба

Использование акустических излучений

-

Получение конфиденциальной информации

Копирование с помощью визуального и слухового контроля

-

Те же

ТИП УГРОЗЫ

ПРИЧИНЫ ИЛИ ПОБУДИТЕЛЬНЫЕ МОТИВЫ

Преднамеренные
угрозы

Непреднамеренные
угрозы

Маскировка под пользователя, подбор пароля

-

Несанкционированное вмешательство в работу системы в преступных целях

-

Ошибка в работе оператора

Низкая квалификация оператора, применение несертифицированного программного продукта

Ошибки программиста, описание и искажение программной защиты, раскрытие кодов и паролей

-

В целях извлечения личной выгоды или нанесения ущерба

Ошибки эксплуатационщика, описание и искажение схем защиты, ошибочная коммутация

-

Те же

-

Ошибки эксплуатационщика, описание и искажение схем защиты, ошибочная коммутация

Недостаточная квалификация, нарушение технологии

-

Ошибки пользователя

Использование недостаточной защиты

Приложение 2

Классификация методов криптографии

-

Приложение 3

Структурная схема защиты информации

Приложение 4

Программный код реализации алгоритма шифрования RSA

unit unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, ComCtrls;

type

TForm1 = class(TForm)

ed_number1: TEdit;

btn_KeyGenerate: TButton;

ed_number2: TEdit;

ed_p: TEdit;

ed_q: TEdit;

lbl_Numbers: TLabel;

lbl_SimpleNumbers: TLabel;

ed_n: TEdit;

lbl_n: TLabel;

ed_PublicKey: TEdit;

ed_PrivateKey: TEdit;

lbl_PublicKey: TLabel;

ed_phi: TEdit;

btn_Encrypt: TButton;

btn_Decrypt: TButton;

mem_Encrypt: TMemo;

mem_Cipher: TMemo;

lbl_SourceMessage: TLabel;

lbl_ScrambledMessage: TLabel;

lbl_BlockLength: TLabel;

mem_Decrypt: TMemo;

OpenDialog1: TOpenDialog;

btn_CryptFileOpen: TButton;

btn_SaveToFile: TButton;

btn_DecryptFileOpen: TButton;

btn_Exit: TButton;

lbl_PrivateKey: TLabel;

lbl_phi: TLabel;

SaveDialog1: TSaveDialog;

btn_About: TButton;

procedure btn_KeyGenerateClick(Sender: TObject);

procedure btn_EncryptClick(Sender: TObject);

procedure btn_DecryptClick(Sender: TObject);

procedure btn_CryptFileOpenClick(Sender: TObject);

procedure btn_SaveToFileClick(Sender: TObject);

procedure btn_DecryptFileOpenClick(Sender: TObject);

procedure btn_ExitClick(Sender: TObject);

procedure mem_EncryptChange(Sender: TObject);

procedure btn_AboutClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

n,X: longWord;

d,e: LongWord;

implementation

{$R *.dfm}

procedure Clear (Sender: TObject);

begin

Form1.ed_n.Text := '';

Form1.ed_phi.Text := '';

Form1.ed_PublicKey.Text := '';

Form1.ed_PrivateKey.Text := '';

Form1.ed_p.Text := '';

Form1.ed_q.Text := '';

n := 0; X := 0; d := 0; e := 0;

end;

{***}

function MEmodN(m,e,n: int64): longword;

var i: longword;

x: int64;

begin

X := M mod N;

for i := 2 to e do

begin

X := X*M - ((X*M) div N)*N;

end;

Result := X;

end;

{***}

function CodeAlgoritm(CodeText: String; se, sn: LongWord): string;

var Code: string;

i, SimbCount, Size, CodeWord: LongWord;

begin

SimbCount := Length(CodeText);

CodeWord := 0;

Size := 1;

for i := 1 to SimbCount do

begin

if ord(CodeText[i])<>0 then CodeWord := CodeWord + (ord(CodeText[i])-1)*Size

else CodeWord := CodeWord;

Size:= Size*254;

end;

CodeWord := MEmodN(CodeWord,se,sn);

Code:= '';

Size:= 254;

for i:= 1 to SimbCount do

begin

Code:= Code+chr((CodeWord mod Size)+1);

CodeWord:= CodeWord div Size;

end;

Result:= Code;

end;

{***}

procedure TForm1.btn_KeyGenerateClick(Sender: TObject);

var nearp: word;

nearq: word;

p,q: word;

i,j, temp: longword;

Flag: boolean;

begin

e := 0; d := 0; x := 0; n := 0; p := 0; q := 0;

if (ed_number1.Text = '') or (ed_Number2.Text = '') then

begin

ShowMessage ('Ошибка генерации ключей!' + #13 + `Не введено одно из чисел.');

exit;

end;

Form1.Enabled:= False;

nearp:= StrToInt(ed_number1.Text);

for i := nearp downto 1 do

begin

Flag := False;

for j := 2 to (round(sqrt(i))+1) do

begin

if ((i mod j)=0) and (i<>j) then

begin

Flag := True;

Break;

end;

end;

if not Flag then

begin

P := i;

Break;

end;

end;

nearq := StrToInt(ed_number2.Text);

for i := nearq downto 1 do

begin

Flag := False;

for j := 2 to (round(sqrt(i))+1) do

begin

if ((i mod j)=0) and (i<>j) then

begin

Flag := True;

Break;

end;

end;

if not Flag then

begin

Q := i;

Break;

end;

end;

ed_p.Text := IntToStr(p);

ed_q.Text := IntToStr(q);

n := p*q;

x := (p-1)*(q-1);

ed_n.Text := IntToStr(n);

ed_phi.Text := IntToStr(x);

Application.ProcessMessages;

For i := Round(X/4) to X-1 do

begin

Flag := False;

For j := i downto 2 do

begin

if ((i mod j)=0) and ((X mod j)=0) then

begin

Flag := True;

Break;

end;

end;

if not Flag then

begin

E := i;

Break;

end;

end;

ed_PublicKey.Text := IntToStr(E);

Application.ProcessMessages;

For i := 2 to X do

begin

if (E*I mod X = 1) and (E<>I) then

begin

D := I;

Break;

end;

end;

ed_PrivateKey.Text := IntToStr(D);

Form1.Enabled := True;

if d = 0 then

begin

ShowMessage('Ошибка при подборе e и d,'+#13+ 'd - не найдено');

N := 1;

Exit;

end;

Temp := X-6 ;

Temp := MEmodN(Temp,e,N);

Temp := MEmodN(Temp,d,N);

if Temp <> X-6 then

begin

ShowMessage('Ошибка при подборе e и d,'+#13+ 'вероятно переполнение разрядной сетки');

N := 1;

end;

end;

{***}

procedure TForm1.btn_EncryptClick(Sender: TObject);

var CodeText: string;

SimbCount,Size:LongWord;

begin

if N < 256 then

begin

ShowMessage ('Ne kodiruem! Error!');

Exit;

end;

SimbCount := 0;

Size := 255;

while Size < N do

begin

Size := Size*255;

Inc(SimbCount);

end;

CodeText := mem_Encrypt.Text;

while CodeText[length(CodeText)] in [#13,#10] do Delete(CodeText, length(CodeText),1);

while (length(CodeText) mod SimbCount)<>0 do

CodeText := CodeText + ' ';

mem_Cipher.Text:= '';

while length(CodeText)>0 do

begin

mem_Cipher.Text:=

mem_Cipher.Text+CodeAlgoritm( Copy(Codetext,1,SimbCount)+#0 , e, n);

Delete(CodeText, 1, SimbCount);

end;

lbl_BlockLength.Caption := 'Длина блоков: '+IntToStr(SimbCount+1);

btn_SaveToFile.Enabled := true;

btn_Decrypt.Enabled := true;

end;

{***}

procedure TForm1.btn_DecryptClick(Sender: TObject);

var CodeText: string;

SimbCount,Size:LongWord;

Begin

if (ed_n.Text='') or (ed_PrivateKey.Text = '') then

begin

ShowMessage ('Ошибка дешифрования!' + #13 + 'Возможно, не введен один из ключей.');

Exit;

end;

n := StrToInt(ed_n.Text);

d := StrToInt(ed_PrivateKey.Text);

if N < 256 then

begin

ShowMessage('Ошибка! Кодировка невозможна');

Exit;

end;

SimbCount := 1;

Size := 255;

while Size < N do

begin

Size := Size*255;

Inc(SimbCount);

end;

CodeText :=mem_Cipher.Text;

while CodeText[length(CodeText)] in [#13,#10] do Delete(CodeText, length(CodeText),1);

while (length(CodeText) mod SimbCount)<>0 do

CodeText:= CodeText + ' ';

mem_Decrypt.Text := '';

CodeText := mem_Cipher.Text;

while length(CodeText) > 0 do

begin

mem_Decrypt.Text := mem_Decrypt.Text+CodeAlgoritm( Copy(Codetext,1,SimbCount) , d, n);

Delete(CodeText, 1, SimbCount);

end;

CodeText := mem_Decrypt.Text;

while pos(#1,CodeText)<>0 do Delete(CodeText,pos(#1,CodeText),1);

mem_Decrypt.Text := CodeText;

lbl_BlockLength.Caption := 'Длина блоков: '+IntToStr(SimbCount);

btn_SaveToFile.Enabled := true;

end;

{***}

procedure TForm1.btn_CryptFileOpenClick(Sender: TObject);

begin

if OpenDialog1.Execute then { Display Open dialog box }

mem_Encrypt.Lines.LoadFromFile(OpenDialog1.FileName);

btn_Encrypt.Enabled := true;

mem_Decrypt.Text := '';

mem_Cipher.Text := '';

btn_Decrypt.Enabled := false;

btn_KeyGenerate.Enabled := true;

ed_n.Enabled := false;

ed_PrivateKey.Enabled := false;

ed_n.PasswordChar := #0;

ed_phi.PasswordChar := #0;

ed_PublicKey.PasswordChar := #0;

ed_PrivateKey.PasswordChar := #0;

ed_p.PasswordChar := #0;

ed_q.PasswordChar := #0;

Clear(Form1);

end;

{***}

procedure TForm1.btn_SaveToFileClick(Sender: TObject);

begin

if SaveDialog1.Execute then

if btn_Encrypt.Enabled = false then

mem_Decrypt.Lines.SaveToFile(SaveDialog1.FileName)

else

mem_Cipher.Lines.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm1.btn_DecryptFileOpenClick(Sender: TObject);

begin

if OpenDialog1.Execute then

mem_Cipher.Lines.LoadFromFile(OpenDialog1.FileName);

mem_Encrypt.Text := '';

mem_Decrypt.Text := '';

btn_Decrypt.Enabled := true;

btn_Encrypt.Enabled := false;

btn_KeyGenerate.Enabled := false;

ed_n.Enabled := true;

ed_PrivateKey.Enabled := true;

ed_n.PasswordChar := '#';

ed_phi.PasswordChar := '#';

ed_PublicKey.PasswordChar := '#';

ed_PrivateKey.PasswordChar := '#';

ed_p.PasswordChar := '#';

ed_q.PasswordChar := '#';

Clear(Form1);

end;

procedure TForm1.btn_ExitClick(Sender: TObject);

begin

Application.Terminate;

end;

procedure TForm1.mem_EncryptChange(Sender: TObject);

begin

if mem_Encrypt.Text <> '' then btn_Encrypt.Enabled := true

else

btn_Encrypt.Enabled := false;

end;

procedure TForm1.btn_AboutClick(Sender: TObject);

begin

Form2.Visible := true;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm2 = class(TForm)

btn_OK: TButton;

lbl_Head: TLabel;

lbl_Faculty: TLabel;

lbl_Topic_1: TLabel;

lbl_Topic_2: TLabel;

lbl_Topic_3: TLabel;

lbl_Student: TLabel;

lbl_Group: TLabel;

lbl_Smolensk: TLabel;

procedure btn_OKClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.btn_OKClick(Sender: TObject);

begin

Form2.Visible := False;

end;

end.


Подобные документы

  • Шифрование как способ преобразования открытой информации в закрытую и обратно, его основные этапы и назначение, сферы практического применения и оценка преимуществ. История AES, его описание и вспомогательные процедуры, а также программная реализация.

    курсовая работа [994,9 K], добавлен 12.04.2012

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

    курсовая работа [45,0 K], добавлен 13.11.2009

  • Теоретическое исследование вопроса и практическое применение. Общие сведения о графах. Алгоритм Дейкстры. Особенности работы в среде. Программная реализация. Описание алгоритма и структуры программы. Описание программных средств. Текст программы.

    курсовая работа [1,0 M], добавлен 27.11.2007

  • Особенности метода неопределенных множителей Лагранжа, градиентного метода и метода перебора и динамического программирования. Конструирование алгоритма решения задачи. Структурная схема алгоритма сценария диалога и описание его программной реализации.

    курсовая работа [1010,4 K], добавлен 10.08.2014

  • Методы криптографической защиты информации в России в XIX веке. Описание структуры программы: библиотека DLL, графическая оболочка, консольная реализация. Вид функции шифрования. Инструкция системного программиста. Класс для шифровки, расшифровки данных.

    контрольная работа [26,3 K], добавлен 22.12.2011

  • Исследование симметричных алгоритмов блочного шифрования. Минусы и плюсы алгоритма IDEA. Разработка программы аутентификации пользователя и сообщений на основе алгоритма IDEA. Выбор языка программирования. Тестирование и реализация программного средства.

    курсовая работа [314,2 K], добавлен 27.01.2015

  • Проблема защиты информации. Особенности защиты информации в компьютерных сетях. Угрозы, атаки и каналы утечки информации. Классификация методов и средств обеспечения безопасности. Архитектура сети и ее защита. Методы обеспечения безопасности сетей.

    дипломная работа [225,1 K], добавлен 16.06.2012

  • Проблема защиты информации в Internet. Технические детали спецификации SKIP, конфиденциальность и аутентификация. Устройство SunScreen: аппаратная система защиты локальных сетей. Алгоритм шифрования DES. Реализация алгоритма ГОСТ, реализация, расшифровка.

    курсовая работа [2,8 M], добавлен 25.04.2012

  • Изучение и характеристика правовых, организационных и технических мер информационной безопасности. Технические средства защиты от утечек информации: криптография, идентификация пользователей и управление доступом. Описание алгоритма защиты базы данных.

    курсовая работа [788,8 K], добавлен 27.04.2013

  • Семиуровневая архитектура, основные протоколы и стандарты компьютерных сетей. Виды программных и программно-аппаратных методов защиты: шифрование данных, защита от компьютерных вирусов, несанкционированного доступа, информации при удаленном доступе.

    контрольная работа [25,5 K], добавлен 12.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.