Тип работы:
Предмет:
Язык работы:


Клиент-серверное приложение шифрования данных

Работа №158965

Тип работы

Бакалаврская работа

Предмет

информатика

Объем работы100
Год сдачи2020
Стоимость4210 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
27
Не подходит работа?

Узнай цену на написание


РЕФЕРАТ 4
Содержание 5
Введение 8
1 Анализ предметной области для решения поставленной задачи 10
1.1 Постановка задачи 10
1.2 Актуальность использования шифрования данных 11
1.3 Обзор алгоритмов шифрования 12
1.3.1 Симметричные алгоритмы шифрования 15
1.3.2 Ассиметричные алгоритмы шифрования 16
1.4 Определение архитектуры приложения 17
2. Выбор языка программирования и среды разработки 19
2.1 Язык программирования для клиентского приложения 19
2.2 Язык программирования для клиентского приложения 20
2.3 Выбор среды разработки для клиент-серверного приложения 21
2.4 Взаимодействие клиента и сервера 22
3 Разработка клиент-серверного приложения 24
3.1 Разработка серверной части приложения 27
3.2 Разработка клиентской части приложения 32
4 Описание работы приложения 38
4.1 Руководство пользователя 38
4.2 Описание работы серверного приложения 44
4.3 Описание работы клиентского приложения 45
4.4 Описание алгоритмов шифрования 46
4.4.1 Алгоритм шифрования XOR 47
4.4.2 Алгоритм шифрования RSA+AES 47
5 Безопасность жизнедеятельности 49
Заключение 51
Список используемых источников 53
Приложение А 54
Листинги программы сервера 54
Приложение А.1 54
Файл «ClientConnection.cs» 55
Приложение А.2 59
Файл «Program.cs» 59
Приложение А.3 59
Файл «ServerCore.cs» 59
Приложение А.4 61
Файл «ServerForm.cs» 61
Приложение А.5 63
Файл «ServerForm.Designer.cs» 63
Приложение А.6 66
Файл «TableDataRow.cs» 66
Приложение А.7 68
Файл «DataClientToServer.cs» 68
Приложение А.8 68
Файл «DataServerToClient.cs» 68
Приложение А.9 69
Файл «EncriptionType.cs» 69
Приложение А.10 69
Файл «QueryClientType.cs» 69
Приложение B 70
Листинги программы клиента 70
Приложение B.1 70
Файл «Program.cs» 70
Приложение B.2 71
Файл «TcpConnection.cs» 71
Приложение B.3 75
Файл «DataClientToServer.cs» 75
Приложение B.4 76
Файл «DataServerToClient.cs» 76
Приложение B.5 76
Файл «EncriptionType.cs» 76
Приложение B.6 77
Файл «QueryClientType.cs» 77
Приложение С Результат работы программы 78
Приложение С.1 - Вид начального экрана сервера 78
Приложение С.2 - Вид экрана с выбором алгоритма шифрования 78
Приложение С.3 - Вид экрана с подключением нового клиента 79
Приложение С.4 - Вид экрана с выбором файла 79
Приложение С.5 - Вид экрана состояния переданных файлов 80
Приложение С.6 - Вид экрана полученных файлов от клиентов 81
Приложение С.7 - Вид сообщения с ошибкой при подключении 81
Приложение С.8 - Вид сообщения с ошибкой при разрыве соединения 81
Приложение D 82
UML-диаграммы приложения 82
Приложение D.1 - UML-диаграмма классов сервера 82
Приложение D.2 - UML-диаграмма классов клиента 83
Приложение D.3 - UML-диаграмма вариантов использования сервера 85
Приложение D.4 - UML-диаграмма вариантов использования клиента 86
Приложение D.5 - UML-диаграмма деятельности клиента 87
Приложение D.6 - UML-диаграмма деятельности сервера 88
Приложение D.7 - UML-диаграмма последовательности 89
Приложение D.8 - UML-диаграмма развертывания 90
Приложение E 91
Презентация 91

За века своего существования человечество придумало множество способов хранения тайны. В Древнем Риме, например, чтобы тайно передать письмо, брили голову рабу, писали на коже сообщение, а потом, дождавшись, когда волосы отрастут, отправляли его к адресату. Примерами старых алгоритмов также выступают: «шифр Цезаря», «шифр Виженера» и т.д. Но это старые и простые алгоритмы, со временем появлялись новые алгоритмы, которые стали сложнее и одновременно с этим эффективнее. Необходимость шифрования данных получила актуальность и в годы войны.
Во время Первой Мировой Войны криптография использовалась в ведении боевых действий. Лидерами в этой области были Россия и Франция, но свои наработки имели и другие страны, в том числе Англия и Германия. Возможно, самым известным случаем применения является телеграмма Циммермана. Она была перехвачена и расшифрована британским криптографическим отделом “Комната №40”. Текст этой телеграммы позволил США обосновать объявление войны Германии и вступить в боевые действия на стороне союзников. В годы Второй мировой войны, немцы использовали шифровальную машину «Энигма» для шифровки/дешифровки передаваемых сообщений между частями вермахта, что позволило обеспечить продвижение Германии на первых этапах войны, однако в противовес Энигме, вскоре появилась другая дешифровальная машина «Bombe», которая смогла расшифровать передаваемые сообщения и обеспечить тем самым победу союзников в войне с Германией.
В 21 веке развитие вычислительной техники достигло небывалых высот. Появились настольные компьютеры, планшеты, смартфоны и многие другие средства вычислительной техники, которые так плотно вошли в нашу жизнь, что стали её неотъемлемой частью. Они позволяют нам хранить огромные объемы данных и проводить невероятно большие вычисления за малый промежуток времени. Т.к. компьютеры являются средствами хранения аинформации и используются повсеместно, включая военные и государственные сферы, то возникла и потребность в хранение и передачи её, используя различные средства защиты, например, шифрование.
В наше время шифрование получило значительное развитие. Появилась наука называемая «Криптографией». Криптография - это наука, изучающая способы сокрытия данных и обеспечения их конфиденциальности. Это одна из старейших наук и ее история насчитывает четыре тысячелетия.
За это время алгоритмы шифрования тоже сильно усложнились. Они разделились на две большие группы: симметричные (XOR, AES, ГОСТ, Blowfish, CAST, DES) и асимметричные (RSA, El-Gamal). Отличия между ними заключаются в том, что симметричные алгоритмы шифрования используют один ключ для зашифровывания информации и для ее дешифрования, а асимметричные алгоритмы используют два ключа - один для зашифровывания, другой для дешифрования. Все эти алгоритмы требует затраты времени и вычислительных мощностей в зависимости от различных факторов: объема шифруемой информации и алгоритма шифрования.
В данной работе мной была поставлена задача разработать клиент- серверное приложение шифрования данных. Приложение должно представлять собой единую распределенную вычислительную систему. Пользователь должен иметь возможность выбрать файл для шифрования/расшифрования и выбрать один из предложенных алгоритмов для обработки данных.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В данной работе было разработано клиент-серверное приложение, представляющий собой простой кластер, для шифрования файлов. Клиент и сервер образуют единую распределенную вычислительную систему. Сервер имеет интуитивно понятный графический интерфейс, в котором пользователь может выбирать алгоритм для зашифрования/расшифрования. После чего можно наблюдать за ходом выполнения работы. Клиент может подключаться к серверу, принимать от него задачу и отправлять результат обратно серверу.
Клиентская часть разрабатывалась с использованием объектно ориентированного языка программирования C#. Язык удовлетворяет требованию многомодульное™. За счет наличия классов повысилась наглядность и читаемость кода. Также средства языка позволили относительно просто создавать процессы и нити.
Серверная часть разрабатывалась с использованием объектно ориентированного языка программирования C#, который также удовлетворяет требование многомодульное™. Код, написанный на C#, имеет высокую наглядность и читаемость. Язык позволил легко создать графический интерфейс и реагировать на действия пользователя с помощью WinForms.
Взаимодействие клиента и сервера реализовано по протоколу TCP/IP. Для реализации использовалась библиотека Winsock, которая позволила организовать обмен информации через сокеты.
В дальнейшем приложение можно улучшить, добавив новые алгоритмы шифрования, в частности симметричные. Можно реализовать службу на машине клиента, которая будет отслеживать запросы от сервера. Как только на сервере установили задачу, сервер будет отправлять запрос службе. Она, в свою очередь, будет запускать клиентов с заданными настройками. В качестве настроек может выступать максимальная загрузка ЦП. Это позволит запускать больше клиентов на одной машине, которые одновременно могу работать с несколькими серверными приложениями. Можно добавить для клиентского приложения очередь, которая будет содержать задачи для обработки. Длина этой очереди будет определяться в настройках для клиента. Также можно создать специальное приложение для отдельной ЭВМ. Оно будет выступать как связующий элемент между клиентским и серверным приложением. К нему будут подключены все доступные для работы клиенты. Сервер будет взаимодействовать не с клиентами, а с этим промежуточным звеном. За счет этого с пользователя снимается необходимость контроля над подключением клиентов. Он просто задает задачу, а сервер направляет подзадачи к промежуточной ЭВМ. Она в свою очередь распределяет задачи между имеющимися клиентами. Такая архитектура получается более гибкой и позволяет обслуживать одновременно несколько серверных приложений. В этом случаи удобно собирать статистику о работе клиентских машин с целью выявления потенциальных проблем и неполадок. Данная ЭВМ будет являться центральной частью, что делает её уязвимым местом. Поэтому необходимо либо организовать несколько таких узлов, работающих по определенному протоколу, либо использовать специальные средства для обеспечения надежности.
В ходе выполнения работы, были получены навыки разработки клиент серверного приложения. Улучшены навыки разработки в среде MS Visual Studio 2019. Получен дополнительный опыт и расширены знания по языку C#. Улучшены навыки работы с сокетами.



1. Троелсен, Э. Язык программирования С# 5.0 и платформа .NET 4.5 / Э. Троелсен; Пер. с англ. Ю.Н. Артеменко. — М.: Вильямс, 2016. — 1312 стр.
2. Страуструп Б. «Программирование. Принципы и практика с использованием C#». 2016 г., 1328 стр.
3. Харви и Пол Дейтелы «Как программировать на C#». 2006 г., 1454 стр.
4. Хейлсберг, А. Язык программирования C#. Классика Computers Science / А. Хейлсберг, М. Торгерсен, С. Вилтамут. — СПб.: Питер, 2016. — 784 c.
5. Билл Вагнер «Наиболее эффективное программирование на C#. 50 способов улучшения кода». 2017 г., 240 стр.
6. Ишкова Э. А. Самоучитель С#. Начала программирования; Наука и техника - М., 2013. - 496 c.
7. Албахари Джозеф , Албахари Бен C# 6.0. Справочник. Полное описание языка; Вильямс - М., 2016. - 623 c.


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ