1
我正在处理客户端/服务器应用程序,两者之间的通信是加密的。我正在使用RC2加密,因为客户端已嵌入且CPU资源有限。我正在使用System.Security.Cryptography.RC2CryptoServiceProvider.CreateDecryptor/CreateEncryptor方法来创建加密类。RC2加密和数据包分隔符
我的问题源于TCP倾向于将消息拆分为多个数据包。因为整个消息可能不会到达Socket.Receive()的一个调用中,所以我需要在出站数据包的末尾包含一个数据包分隔符,以便接收端可以知道数据包的结束位置(当前使用0x0D)。但是,RC2加密最终会在有效负载的某处创建一个0x0D,导致接收端将该数据包解释为完成。当它试图解密这个被截断的数据包时,它会失败。
有关这种事情通常如何处理的任何建议?或者甚至只是一个RC2加密已知的字符,不会产生我可以用作分隔符的字符?
请不要在“(C#)”等前加上标题。这就是标签的用途。 –
你可以发布相关的接收代码吗? –
正常情况下,这是通过在密文数据包前加一个长度的头来完成的。然后解密器首先读取长度并知道从TCP流中读取很多字节。但是,这仍然会让您遇到TLS已经找到并解决的所有其他缺陷。 –