https://github.com/flyer-dm/diffie_hellman_protected_server
Учебный алгоритм Диффи - Хеллмана асимметричного шифрования для сервера на python
https://github.com/flyer-dm/diffie_hellman_protected_server
Last synced: about 1 year ago
JSON representation
Учебный алгоритм Диффи - Хеллмана асимметричного шифрования для сервера на python
- Host: GitHub
- URL: https://github.com/flyer-dm/diffie_hellman_protected_server
- Owner: Flyer-DM
- Created: 2022-11-20T19:16:32.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-11-22T16:19:38.000Z (over 3 years ago)
- Last Synced: 2025-01-25T23:03:24.316Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Лабораторная работа "Алгоритмы асимметричного шифрования"
Алгоритм Диффи-Хеллмана:

Основной Алгоритм:
1.При запуске клиент и сервер генерируют каждый свою пару ключей (открытй сервер генерирует случайным образом, клиент - вводит с клавиатуры, закрытый ключи оба берут из разных файлов):



2.При подключении клиента отправляет серверу свой открытый ключ:

3.В ответ сервер посылает клиенту свой открытый ключ (после прохождения проверки клиентского ключа на разрешённость):


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


4.Когда клиент отправляет сообщение на сервер, он шифрует его:


5.Сервер при получении дешифрует:

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

Успешное подключение:

Отказ в доступе:

Шифрование происходит по одному порту (обычно 1025), а общение по указанному клиентом:
Переподключение на порт 4095:

Неудачное переподключение на несуществующий порт:
