我正在使用 javax.crypto 在 java 中进行 AES CBC 解密。我正在使用以下 Cipher 类方法:
public final void init (int opmode, Key key, AlgorithmParameters params)
初始化方法,final int update(byte[] input, int inputOffset, int inputLen, byte[] output)
解密数据的方法,- 最后我调用该
final int doFinal(byte[] output, int outputOffset)
方法完成解密。
我的查询是这样的:我可以假设doFinal
调用返回给我的数据大小总是小于或等于 AES 块大小吗?该文档将 doFinal 方法描述为:
“完成多部分转换(加密或解密)。处理可能在以前的更新调用中缓冲的任何字节。最终转换后的字节存储在输出缓冲区中。”</p>
但它没有说输出缓冲区最多包含一个数据块。虽然我知道这是 AES API 的一般行为,这是我的代码到目前为止所表现出的行为,但是这个假设会一直成立吗?