我们有一个用 C# 编写的 TCP/IP 套接字服务器,用于将二进制文件传输到客户端。例如,剪辑、图像。带有回调的异步 BeginSend/EndSend 被用于发送 byte[] 缓冲区。
新的要求是加密正在传输的数据。每个客户端连接都将提供一个加密密钥供服务器使用。实际的加密算法并不那么重要,即目标只是确保数据不会以明文形式发送。即使具有 40 位密钥的 RC2CryptoServiceProvider 也足够了……与 RC2 相比,具有 128 位密钥的 RijndaelManaged 是一种过度杀伤而且相当占用 CPU 的资源。
当然可以在传输之前先生成数据文件的加密版本。但理想情况下,我们应该在从文件中读取数据并在套接字上发送时动态加密文件。鉴于数据文件的大小,将整个文件内容读取到内存既不高效也不可扩展。
在动态加密文件中的数据以发送到套接字对等点时,是否有一些好的模式可以遵循?