我正在开发一个客户端/服务器应用程序,并且两者之间的通信是加密的。我正在使用 RC2 加密,因为客户端是嵌入式的并且 CPU 资源是有限的。我正在使用 System.Security.Cryptography.RC2CryptoServiceProvider.CreateDecryptor/CreateEncryptor 方法来创建加密类。
我的问题源于 TCP 倾向于将消息拆分为多个数据包。因为整个消息可能不会在一次 Socket.Receive() 调用中到达,所以我需要在出站数据包的末尾包含一个数据包分隔符,以便接收端可以知道数据包的结束位置(当前使用 0x0D)。但是,RC2 加密最终会在负载中的某处创建 0x0D,导致接收端将数据包解释为已完成。当它试图解密这个被截断的数据包时,它失败了。
关于通常如何处理这类事情的任何建议?或者甚至只是一个已知 RC2 加密不会产生我可以用作分隔符的字符?