AES / CBC和AES / ECB加密后的数据大小
我想知道AES加密后的数据大小,这样我就可以避免主要出于了解大小而缓存我的后AES数据(在磁盘或内存上)。
我使用128位AES javax.crypto.Cipher
和javax.crypto.CipherInputStream
进行加密。
使用各种输入大小执行的一些测试表明,如下计算的后期加密大小是正确的:
long size = input_Size_In_Bytes; long post_AES_Size = size + (16 - (size % 16));
但是我不确定以上公式是否适用于所有可能的输入大小。
在应用AES加密后,是否有一种方法可以计算数据的大小-事先无需缓存(磁盘或内存中的)加密数据即可知道其加密后的大小?
回答:
AES与密钥大小无关地具有16字节的固定块大小。假设您使用PKCS 5/7填充,请使用以下公式,
cipherLen = (clearLen/16 + 1) * 16;
请注意,如果明文是块大小的倍数,则需要一个全新的块进行填充。假设您的明文为16个字节。密文将占用32个字节。
您可能需要使用密文存储IV(初始向量)。在这种情况下,您需要为IV增加16个字节。
以上是 AES / CBC和AES / ECB加密后的数据大小 的全部内容, 来源链接: utcz.com/qa/428437.html