Cryptography AES256网络流量-填充如何影响大小?

Cryptography AES256网络流量-填充如何影响大小?,cryptography,aes,padding,Cryptography,Aes,Padding,我通过AES256(CBC)加密连接发送二进制数据,该连接在加密之前经过压缩。我正在使用OpenSSL进行AES加密 问题是,我需要在“随机”长度段中对数据进行解密。这需要填充吗?如果是这样的话,我将如何区分填充和真实数据之间的差异?密码是否具有一些内置功能,可以在解密时检测并删除填充?网络流量中是否应该存在填充 我试图避免有人发送248位数据,而这些数据并没有及时被服务器端读取,他们会看到延迟(这是一个视频游戏) 我在谷歌上搜索了很多,没有发现任何与此相关的信息;这导致人们相信,我可能在这一切

我通过AES256(CBC)加密连接发送二进制数据,该连接在加密之前经过压缩。我正在使用OpenSSL进行AES加密

问题是,我需要在“随机”长度段中对数据进行解密。这需要填充吗?如果是这样的话,我将如何区分填充和真实数据之间的差异?密码是否具有一些内置功能,可以在解密时检测并删除填充?网络流量中是否应该存在填充

我试图避免有人发送248位数据,而这些数据并没有及时被服务器端读取,他们会看到延迟(这是一个视频游戏)

我在谷歌上搜索了很多,没有发现任何与此相关的信息;这导致人们相信,我可能在这一切如何运作的问题上走得很远,或者我的问题是独一无二的(我对此表示怀疑)


这一切归结起来就是:我是否需要担心填充/取消添加网络流量?

您将遇到一个问题,即您只能对大小为块大小倍数的包进行加密和解密。据我所知,您希望与更小或其他大小(不是128位的倍数)的软件包建立“实时”连接。你想过使用流密码吗?然后可以加密任意大小的包。您还可以将AES用作流密码,例如计数器模式。

在CBC模式下,您需要将所有消息填充到下一个块边界。你还需要在每条信息中发送静脉注射。显然,短消息的开销要比长消息的开销大

CTR模式将块密码转换为流密码。它不需要填充,IV由一个Nonce代替,Nonce可以(但并不总是)比IV短

如果你有很多短消息,那么CTR模式可能会给你带来值得的节省。或者将大量短消息捆绑成一条较大的消息进行加密


填充通常有一种非常严格的形式,可以自动识别和删除。

我实际上考虑了几种流密码。我只是对他们不太熟悉。我想我该改变了。你知道有一个很好的流密码库吗?OpenSSL的选择相当有限。在HC-256上进行了一个例子,因为我在C++中找不到任何地方,所以NoCe可以是隐式的(例如,对于连接进行一次协商,然后通过一些消息号导出单个消息)。