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


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

Работа №160876

Тип работы

Дипломные работы, ВКР

Предмет

информатика

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

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


Содержание 5
Введение 8
1 Анализ предметной области для решения поставленной задачи 10
1.1 Постановка задачи 10
1.2 Обзор алгоритмов шифрования 11
1.2.1 Симметричные алгоритмы шифрования 14
1.2.2 Асимметричные алгоритмы шифрования 15
1.3 Определение архитектуры приложения 16
1.4 Выбор языка программирования и среды разработки 18
1.4.1 Язык программирования для серверного приложения 18
1.4.2 Язык программирования для клиентского приложения 19
1.4.3 Среда разработки клиент-серверного приложения 20
1.5 Взаимодействие клиента и сервера 21
2 Разработка клиент-серверного приложения 23
2.1 Разработка серверной части приложения 25
2.2 Разработка клиентской части приложения 30
3 Описание работы приложения 35
3.1 Руководство пользователя 35
3.2 Спецификация серверного приложения 47
3.2.1 Класс MainForm 47
3.2.2 Класс MainFormModel 52
3.2.3 Класс ConnectionInfo 53
3.2.4 Класс ListAlgorithmItem 54
3.2.5 Структура SMessage 54
Перечисление MainFormState 55
3.2.1 Перечисление EActionType 55
3.2.1 Перечисление EAlgorithmTags 56
3.2.2 Перечисление ETypeMessage 56
3.3 Спецификация клиентского приложения 57
3.3.1 Класс CClient 57
3.3.2 Класс CEncryptFile 58
3.3.3 Класс CWinsock 59
3.3.4 Класс CSocket 60
3.3.5 Структура SMessage 61
3.3.6 Перечисление ETypeMessage 62
3.3.1 Перечисление EActionType 62
3.3.8 Перечисление EAlgorithmTags 63
Заключение 64
Список используемых источников 66
Приложение А Листинги программы сервера 67
Приложение А.1 Файл «MainForm.cs» 67
Приложение А.2 Файл «MainFormModel.cs» 95
Приложение А.3 Файл «SMessage.cs» 102
Приложение А.4 Файл «Enumeration.cs» 104
Приложение А.5 Файл «ConnectionInfo.cs» 104
Приложение А.6 Файл «ListAlgorithmItem.cs» 105
Приложение А.7 Файл «Program.cs» 106
Приложение B Листинги программы клиента 108
Приложение B.1 Файл «ClientProgram.h» 108
Приложение B.2 Файл «ClientProgram.cpp» 108
Приложение B.3 Файл «CServer.h» 110
Приложение B.4 Файл «CServer.cpp» 111
Приложение B.5 Файл «CEncryptFile.h» 115
Приложение B.6 Файл «CEncryptFile.cpp» 120
Приложение B.7 Файл «CWinsock.h» 126
Приложение B.8 Файл «CWinsock.cpp» 127
Приложение B.9 Файл «CSocket.h» 128
Приложение B.10 Файл «CSocket.cpp» 132
Приложение B.11 Файл «Macros.h» 139
Приложение B.12 Файл «SMessage.h» 140
Приложение С Результаты работы программы 142
Приложение С.1 - Вид начального экрана 142
Приложение С.2 - Вид экрана с выбором файла 142
Приложение С.3 - Вид экрана с выбором действия 143
Приложение С.4 - Вид экрана с выбором алгоритма 143
Приложение С.5 - Вид экрана с указанием деталей алгоритма 144
Приложение С.6 - Вид экрана с ходом выполнения работы 144
Приложение С.7 - Вид завершающего экрана 145
Приложение С.8 - Вид сообщения с ошибкой 145
Приложение D UML-диаграммы приложения 146
Приложение D.1 - UML-диаграмма классов сервера 146
Приложение D.2 - UML-диаграмма классов клиента 147
Приложение D.3 - UML-диаграмма вариантов использования сервера 148
Приложение D.4 - UML-диаграмма вариантов использования клиента 148
Приложение D.5 - UML-диаграмма деятельности сервера 149
Приложение D.6 - UML-диаграмма деятельности клиента 150
Приложение D.7 - UML-диаграмма состояний сервера 151
Приложение D.8 - UML-диаграмма состояний клиента 152
Приложение D.9 - UML-диаграмма последовательности 153
Приложение D.10 - UML-диаграмма развертывания 154
Приложение E Презентация 155


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

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

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

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


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



MSDN https://msdn.microsoft.com/ru-ru
Страуструп Б. «Язык программирования C++». 2004 г., 369 стр.
Страуструп Б. «Программирование. Принципы и практика с использованием C++». 2016 г., 1328 стр.
Лафоре Р. «Объектно-ориентированное программирование в С++». 2004 г., 924 стр.
Харви и Пол Дейтелы «Как программировать на C++». 2006 г.,
1454 стр.
Джеффри Рихтер «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#». 2017 г., 896 стр.
Билл Вагнер «Наиболее эффективное программирование на C#. 50 способов улучшения кода». 2017 г., 240 стр.



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



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


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