Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2015, 16:39   #1
sfu
Новичок
Джуниор
 
Регистрация: 21.12.2015
Сообщений: 1
По умолчанию симметричное шифрование при обмене клиент - сервер

Не удается организовать двусторонний обмен с симметричным шифрованием. Проблема в том, что клиент посылает данные на сервер, потом пытается прочитать ответ, но сервер при десериализации не получает данные. Если без шифрования, то код работает. Сервер данные получает, только если у клиента закомментировать код, чтобы он не ожидал ответа и закрывал поток. Подскажите где здесь ошибки, или каким другим способом это можно реализовать. Ниже код, который у меня.

Клиент:
Код:
            Hashtable param = new Hashtable();
            BinaryFormatter serializer = new BinaryFormatter();
            BinaryFormatter deserializer = new BinaryFormatter();
            TcpClient client = new TcpClient();
            client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11100));
            NetworkStream stream = client.GetStream();
            RijndaelManaged RMCrypto = new RijndaelManaged();
            CryptoStream CryptStreamIn = new CryptoStream(stream, RMCrypto.CreateEncryptor(Key, IV), CryptoStreamMode.Read);
            CryptoStream CryptStreamOut = new CryptoStream(stream, RMCrypto.CreateEncryptor(Key, IV), CryptoStreamMode.Write);
            serializer.Serialize(CryptStreamOut, param);
            Hashtable inparam = (Hashtable)deserializer.Deserialize(CryptStreamIn);
            client.Close();
Сервер:
Код:
            Hashtable param = new Hashtable();
            BinaryFormatter serializer = new BinaryFormatter();
            BinaryFormatter deserializer = new BinaryFormatter();
            TcpListener listner = new TcpListener(IPAddress.Any, Port);
            TcpClient client = listner.AcceptTcpClient();
            NetworkStream stream = client.GetStream();
            RijndaelManaged RMCrypto = new RijndaelManaged();
            CryptoStream CryptStreamIn = new CryptoStream(stream, RMCrypto.CreateDecryptor(Key, IV), CryptoStreamMode.Read);
            CryptoStream CryptStreamOut = new CryptoStream(stream, RMCrypto.CreateDecryptor(Key, IV), CryptoStreamMode.Write);
            tparam = (Hashtable)deserializer.Deserialize(CryptStreamIn);
            serializer.Serialize(CryptStreamOut, param);
            client.Close();
sfu вне форума Ответить с цитированием
Старый 24.12.2015, 15:09   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Вот пример на МСДН

Для потока для записи используем RMCrypto.CreateEncryptor(Key, IV)
Для потока для чтения используем RMCrypto.CreateDecryptor(Key, IV)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Симметричное шифрование, ГОСТ 28147-89 ffpereverzev Помощь студентам 1 15.01.2015 09:17
ESB - посредник при обмене данными antirek Общие вопросы по программированию, компьютерный форум 0 18.12.2013 10:13
Использ. ZLIB для сжатия файла при передаче сервер-клиент Pcrepair Общие вопросы Delphi 0 28.06.2011 19:15
клиент-сервер(proxy)+шифрование SedoL Работа с сетью в Delphi 14 02.11.2009 16:17
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18