В настоящее время я пытаюсь реализовать сервер сокетов, который позволяет клиентам отправлять некоторые команды для запуска и остановки различных служб, предоставляемых сервером. Я получил связь между клиентом и сервером, и получил сервер для ответа на команды, отправленные клиентами. Следующим шагом будет шифрование связи между клиентом и сервером. Я пытаюсь сделать это с помощью RSACryptoServiceProvider.Шифрование сокетов с RSA в C#
Heres кода я использую, чтобы enrypt данные:
CspParameters parameter = new CspParameters();
parameter.KeyContainerName = "keycontainer";
rsaProvider = new RSACryptoServiceProvider(parameter);
StreamReader r = new StreamReader(@"C:\tmp\rsakey.xml");
rsaProvider.FromXmlString(r.ReadToEnd());
string command = "server reply goes here";
ASCIIEncoding bc = new ASCIIEncoding();
byte[] cmd = rsaProvider.Encrypt(bc.GetBytes(command), false);
handler.Send(cmd);
И Херес кода я использую, чтобы расшифровать мои команды
rsaProvider = new RSACryptoServiceProvider(parameter);
StreamReader r = new StreamReader(@"C:\tmp\rsakey.xml");
string xml = r.ReadToEnd();
rsaProvider.FromXmlString(xml);
ASCIIEncoding bc = new ASCIIEncoding();
string test = bc.GetString(state.buffer);
byte[] tmp = rsaProvider.Decrypt(bc.GetBytes(test), false);
Я попытался непосредственно дешифрование моей строки после того, как я зашифрован их, и оно работает. Но передача с клиента на сервер или наоборот не работает, и функция Decrypt генерирует исключение, которое говорит мне, что данные для расшифровки превышают максимальный для модуля.
Каков правильный способ шифрования трафика между клиентом и сервером?
Правильный способ использования SSL. –