在C ++中使用boost :: asio,我正在尝试确定在程序中加密数据包的最佳方法。我想通过类型编号自己定义数据包,每个数据包都有不同的固定数据包大小。系统读取标题(数据列表的类型和条目数量)并创建接收数据的适当结构,然后根据收到的数据做出反应。
但是,当我看到这种方法时,我想知道是否有一种更简单的方法可以在不牺牲效率的情况下实现这一目标。
这些数据包将通过TCP在不同的应用程序之间发送。理想情况下,我的目标是使用尽可能少的带宽和CPU的应用程序,同时尽可能简单地进行修改。有什么建议吗?
答案 0 :(得分:1)
TCP使用流数据,而不是数据包。我强烈建议将数据传输视为数据流而不是数据包序列。这样可以更容易地抽象到代码中。请查看Boost.Serialization或Google Protocol Buffers。
Boost.Asio具有SSL加密capabilities,因此加密数据流非常简单。它还有example使用序列化。
答案 1 :(得分:0)
您考虑过google protobufs了吗?虽然它实际上并没有进行加密(你必须自己做),但它确实提供了一种编码结构化数据的方法,允许你有效地通过网络发送它。此外,还有许多语言绑定(C ++,Java和Python)。