AES(128或256)加密是否会扩展数据?如果是这样,多少钱?

36 compression encryption aes

我想将AES加密添加到软件产品中,但我担心的是增加数据的大小.我猜测数据确实增加了大小,然后我将不得不添加一个压缩算法来补偿.

moo*_*dow 45

AES不会扩展数据.而且,输出通常不是可压缩的; 如果您打算压缩数据,请在加密之前执行此操作.

但请注意,AES加密通常与填充相结合,这增加数据的大小(尽管只有几个字节).

  • 我冒昧地添加了关于填充的注释. (8认同)

Dar*_*era 23

AES不会扩展数据,除了最后一个块末尾的几个填充字节.

结果数据无论如何都是不可压缩的,因为它们基本上是随机的 - 没有基于字典的算法能够有效地压缩它们.最佳做法是首先压缩数据,然后加密它们.


Ste*_*sop 7

在加密之前压缩数据是很常见的.之后压缩它不起作用,因为AES加密数据看起来是随机的(对于任何好的密码,除了任何标题和诸如此类的东西之外).

但是,压缩可能会在某些情况下引入旁道攻击,因此您必须分析自己的使用情况.最近针对加密的VOIP报告了这种攻击:要点是不同的音节在用VBR压缩时会产生比特率的特征变化,因为有些声音比其他声音压缩得更好.因此,一些(或所有)音节可以通过充分的分析来恢复,因为数据是以其生成的速率传输的.修复是要么使用(效率较低)CBR压缩,要么使用缓冲区以恒定速率传输,而不管编码器输出的数据速率如何(增加延迟).

AES将16字节输入块转换为16字节输出块.唯一的扩展是将数据四舍五入到整数个块.


fre*_*ace 5

我相当确定 AES 加密不会给加密的数据添加任何内容,因为这会泄露有关状态变量的信息,而这对于密码学来说是一件坏事。

如果您想混合压缩和加密,请按该顺序进行。原因是加密数据(理想情况下)看起来像完全随机的数据,而压缩算法最终会使数据变得更大,因为它无法实际压缩任何数据以及任何压缩文件格式带来的簿记开销。