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>
しかし、出力バッファに最大で 1 ブロックのデータが含まれるとはどこにも書かれていません。これが AES API の一般的な動作であることは理解していますが、これは私のコードがこれまで示してきた動作ですが、この仮定は常に成り立つのでしょうか?