gpt4 book ai didi

java - AES/CBC 和 AES/ECB 加密后的数据大小

转载 作者:IT老高 更新时间:2023-10-28 20:22:38 33 4
gpt4 key购买 nike

我想知道 AES 加密后的数据大小,这样我就可以避免缓冲我的 AES 后数据(在磁盘或内存上)主要是为了知道大小。

我使用 128 位 AES 和 javax.crypto.Cipherjavax.crypto.CipherInputStream 进行加密。

对不同输入大小进行的一些测试表明,如下计算的后加密大小是正确的:

long size = input_Size_In_Bytes; 
long post_AES_Size = size + (16 - (size % 16));

但我不确定上述公式是否适用于所有可能的输入大小。

有没有办法在应用 AES 加密后计算数据大小 - 无需缓冲加密数据(在磁盘或内存上)以了解其加密后大小?

最佳答案

AES 具有 16 字节的固定 block 大小,与 key 大小无关。假设您使用 PKCS 5/7 填充,请使用此公式,

 cipherLen = (clearLen/16 + 1) * 16;

请注意,如果明文是 block 大小的倍数,则需要一个全新的 block 来填充。假设您的明文是 16 个字节。密文将占用 32 个字节。

您可能希望将 IV(初始 vector )与密文一起存储。在这种情况下,您需要为 IV 添加 16 个字节。

关于java - AES/CBC 和 AES/ECB 加密后的数据大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283787/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com