Студент: Ву Хоанг Ань
Группа: 932101
Приложение для локального чата, разработанное на Go, позволяет работать как сервер или клиент в зависимости от параметра при запуске программы. Программа может отправлять публичные сообщения всем клиентам или личные зашифрованные сообщения между двумя пользователями.
- Сервер
- Запускает сервер и принимает подключения на указанном порту.
- Управляет подключениями нескольких клиентов, сохраняет их никнеймы.
- Отправляет сообщения всем клиентам или пересылает личные сообщения конкретному клиенту.
- Уведомляет о подключении и отключении пользователей.
- Клиент
- Подключается к серверу по IP-адресу и порту.
- Вводит никнейм для участия в чате.
- Отправляет и получает публичные сообщения.
- Отправляет и получает личные сообщения в формате @username <сообщение>.
- Личные сообщения шифруются с использованием алгоритма AES-256 в режиме CFB.
Запуск сервера
go run main.go server 127.0.0.1 8080
Запуск клиента
go run main.go client 127.0.0.1 8080 User1
Отправка публичного сообщения
Hello
Отправка личного сообщения
@User1 hello
Алгоритм шифрования: AES-256 в режиме CFB.
Инициализационный вектор (IV): Генерируется заново для каждого сообщения и передается вместе с ciphertext.
Ключ шифрования: Генерируется на основе никнеймов двух пользователей с использованием хэш-функции SHA-256.
- Только сообщения, содержащие @никнейм, шифруются.
- Публичные сообщения отправляются в виде обычного текста.