AES与应用层消息粘包、分包应该如何处理?

在TCP长连接中,会出现应用层消息粘包的现象,解决方法是:

  1. 文本协议中采用rn实现隔断;

  2. 二进制协议中采用报文结构,如TLV来实现消息分隔;

现在如果TCP长连接是AES加密呢?一种是将加密后的AES码流每16/32字节解密一次,然后在进行回车隔断或者判断报文结构。这样算是透传,可以兼容两种协议。但是感觉上实施起来复杂度挺高。需要两层缓冲:TCP缓冲和AES缓冲。

另外一种是将消息Payload部分进行AES加密进行传输。适合二进制方式,也在AES之外保留了TLV的报文结构。

哪一种更加合适呢?有过经验的开发者请教一下。

阅读 2.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题