Encryption AES(128或256)加密是否扩展数据?如果是,减多少?

Encryption AES(128或256)加密是否扩展数据?如果是,减多少?,encryption,compression,aes,Encryption,Compression,Aes,我想将AES加密添加到软件产品中,但我担心会增加数据的大小。我猜数据的大小确实增加了,然后我必须添加一个压缩算法来进行补偿。AES不会扩展数据。此外,输出通常不可压缩;如果要压缩数据,请在加密之前进行压缩 但是,请注意,AES加密通常与相结合,这会增加数据的大小(虽然只增加几个字节)。我相当肯定AES加密不会给加密的数据添加任何内容,因为这会泄露有关状态变量的信息,而这对于加密来说是一件坏事 如果要混合使用压缩和加密,请按顺序进行。原因是加密数据(理想情况下)看起来像完全随机的数据,而压缩算法最

我想将AES加密添加到软件产品中,但我担心会增加数据的大小。我猜数据的大小确实增加了,然后我必须添加一个压缩算法来进行补偿。

AES不会扩展数据。此外,输出通常不可压缩;如果要压缩数据,请在加密之前进行压缩


但是,请注意,AES加密通常与相结合,这会增加数据的大小(虽然只增加几个字节)。

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


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

如果需要压缩,请在加密之前进行压缩。

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


结果数据无论如何都是不可压缩的,因为它们基本上是随机的——没有基于词典的算法能够有效地压缩它们。最好的做法是先压缩数据,然后对其进行加密。

否。唯一的变化是使用少量填充将数据与块大小对齐


但是,如果要压缩内容,请注意在加密之前应先进行压缩。加密数据通常与随机数据不可区分,这意味着它不会被压缩。

@freespace和其他:我从密码学类中记得的一件事是,在加密之前不应该压缩数据,因为压缩流中有一些可重复的块(例如节头)可能更容易破解您的加密。

通常在加密之前压缩数据。之后压缩它不起作用,因为AES加密的数据看起来是随机的(就像任何好的密码一样,除了任何头和诸如此类的东西)

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


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

鉴于加密的目的是增加熵,我认为压缩几乎没有效果。不过,你可以尝试一下,看看会发生什么。如果你的算法很容易受到已知的明文攻击,那么不管怎么说,你都可能完蛋了。在许多结构化格式中,也有同样可预测的婴儿床。大多数现代系统的设计都是在防止此类攻击可行的模式下运行。正确!压缩的数据通常比实际的纯文本具有更少的重复或可猜测的段。假设您正在加密一个Java代码文件。有人会猜到//经常出现吗?另外:Zip供应商在加密前压缩。@Cheese听起来像是随机IV应该注意的事情。许多年后,@Kasprzol被证明是正确的。犯罪和破坏漏洞。请注意,即使输入是密码块大小的偶数倍,也会添加少量填充字节;需要有一些填充,以便unpadding代码可以计算出有多少填充。我冒昧地添加了一个关于填充的注释。还请注意,除了填充之外,加密数据通常需要一个CipherBlockmode,它需要一个IV(“初始化值”),并且需要一个安全的MAC算法来防止修改。对于AES和大多数块模式,IV是16字节,最常见的HMAC(Sha1)是另外16字节。感谢VoIP攻击示例。想到这样的妥协,这真是一场噩梦。