我正在使用javax.crypto在java中進行AES CBC解密。我使用下面的密碼類方法:Cipher.do最終輸出大小
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方法描述爲:
「完成多部分轉換 (加密或解密)。處理 在先前的更新調用中可能已經緩衝了 的任何字節。最後 轉化字節存儲在 輸出緩衝區。」
但無處說,輸出緩衝區包含的數據最多一個塊。雖然我明白這是AES API的一般行爲,而這是我的代碼迄今爲止所展示的行爲,但是這種假設一直會持續嗎?
爲了清楚起見,我需要多次調用更新函數,因爲我以塊的形式獲取加密數據。我沒有整個加密的數據,所以我不能做一個單一的調用doFinal來一步獲得輸出。 – vikas 2010-08-13 10:06:26