Сетевой TCP-чат [C#, WPF]

Задание на программу:

Необходимо разработать программное решение, которое представляет из себя клиент-серверное приложение с возможностью обмена сообщениями в зашифрованном виде, используя RSA-шифрование.

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

Разработанный сетевой чат представляет из себя клиент-серверное приложение, в котором:

  • Клиент: WPF/MVVM - приложение на языке C# с элементом RSA-шифрования;
  • Сервер: консольное приложение на .NET Framework;RSA шифрование реализовано вручную.

Для шифрования символа выбирается его номер из таблицы текущей кодировки (UTF-8/ASCII) в приложении.

Содержание отчёта (10 страниц):

1 Постановка задачи
2 Исходные данные 
    2.1 Клиент 
    2.2 Сервер
3 Особые ситуации   
    3.1 Ограничения на использования программы (уникальность данных)   
    3.2 Процесс обмена ключевой информацией   
    3.3 Инсталяция программы (нет необходимости)   
    3.4 Запуск программы
4 Математические методы и алгоритмы решения задач
5 Форматы представления данных
6 Структура проекта
7 Результаты работы программы
8 Исходный текст программы

Содержание архива:

  • папка с исходным проектом в Visual Studio 2019 (подойдёт Visual Studio 2012 и выше);
  • папка только с исполняемыми файлами для удобства;
  • отчёт по программе.

Дополнительно:

  • Чтобы запустить сервер не на стандартных настройках, необходимо запустить сервер через командную строку и передать в качестве параметров IP и порт:

  • Для демонстрации в университете можно просто узнать IPv4 компьютера (Сетевые подключения -> Ethernet -> Сведения), на котором будет запущен сервер и запустить его с этим IP, а в приложениях-клиентах указать IP и порт выбранный ранее.

Фрагмент программного кода:

using System;
using System.Collections.Generic;
using System.Numerics;
using System.Text;

namespace Encrypted {
    public class RSA    {
/// Проверка готовности ключей и шифрование
        public string[] Encrypt(string text, long publicE, long publicN)        {
            if (!_isReady)
                throw new ArgumentException("Method Initialize not called");
            return Encode(text, publicE, publicN);
        }
/// Проверка наличия установленных ключей и дешифрирование
        public string Decrypt(string[] data)        {
            if (!_isReady)
                throw new ArgumentException("Method Initialize not called");
            return Decode(data, local_D, n);
        }
/// Шифрование методом RSA
        private string[] Encode(string text, long e, long n)        {
            var data = new List<string>();
            BigInteger num;
            foreach (var ch in text)            {
                int index = ch;
                num = BigInteger.ModPow(index, e, n);
                data.Add(num.ToString());
            }
            return data.ToArray();
        }
/// Дешифрирование методом RSA
        private string Decode(string[] data, long d, long n)        {
            var strBuilder = new StringBuilder();
            BigInteger num;
            foreach (var item in data)            {
                var val = new BigInteger(Convert.ToInt64(item));
                num = BigInteger.ModPow(val, d, n);
                strBuilder.Append((char)num);
            }
            return strBuilder.ToString();
        }
/// Получить свой приватный ключ
        private long GetPrivatePartKey(long fi, long e)        {
            long d = e + 1;
            while (true)            {
                if ((d * e) % fi == 1)
                    break;
                d++;
            }
            return d;
        }
/// Получить свой публичный ключ для обмена
        private long GetPublicPartKey(long fi)        {
            long e = fi - 1;
            while (true)            {
                if (PrimeNumberGenerator.IsPrime(e) &&
                    e < fi &&
BigInteger.GreatestCommonDivisor(new BigInteger(e), new BigInteger(fi)) == BigInteger.One)
                    break;
                e--;
            }

            return e;
        }
    }
}
Купить

2000,00 

(без учета комиссии 3,8 %)

После оплаты Вы получите работу на электронную почту.
EncryptedChat.rar
2467967
Оцени работу

рейтинг

Поделись работой с друзьями

Комментарии (0)

kostyaLem

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегестрированые пользователи имеют возможность комментировать работы
Сетевой TCP-чат [C#, WPF]
Разработанный сетевой чат представляет из себя клиент-серверное приложение, в котором: Клиент: WPF/MVVM - приложение на языке C# с элементом RSA-шифрования; Сервер: консольное приложение на .NET Framework; RSA шифрование реализовано вручную. Для шифрования символа выбирается его номер из таблицы текущей кодировки в приложении.
Категория: Образование
Стоимость: 2000,00