У нас есть сервер сокетов TCP/IP, написанный на C#, который используется для передачи двоичных файлов клиентам. например, клипы, изображения. Асинхронный режим BeginSend/EndSend с обратными вызовами используется для отправки буферов byte[].
Новым требованием является шифрование передаваемых данных. Каждое клиентское соединение будет предоставлять ключ шифрования для использования сервером. Фактический алгоритм шифрования не так важен, т. Е. Цель состоит в том, чтобы просто гарантировать, что данные не будут отправлены в открытом виде. Хватило бы даже RC2CryptoServiceProvider с 40-битными ключами... RijndaelManaged со 128-битными ключами — это излишество и большая нагрузка на ЦП по сравнению с RC2.
Конечно, можно сначала сгенерировать зашифрованную версию файлов данных перед их передачей. В идеале мы должны шифровать файл на лету, когда данные считываются из файла и отправляются через сокет. Учитывая размер файлов данных, чтение всего содержимого файла в память не является ни эффективным, ни масштабируемым.
Есть ли несколько хороших шаблонов, которым нужно следовать при шифровании данных из файлов на лету для отправки на одноранговый узел сокетов?