2015-06-30 78 views
1

我正在使用CFB模式的AES256加密。我必須使用32字節密鑰。 但我對初始化向量有點困惑。 AES256應該使用多少個字節的初始化向量? 它是16字節還是32字節?在java中AES256加密需要多少初始化向量?

任何代碼示例將不勝感激。

+3

通常情況下,即使密鑰大小大於塊大小,IV的大小也是始終爲128位(= 16字節)的塊的大小。 – Marwie

+0

你爲什麼困惑?嘗試傳遞一個不是16字節長的IV,看看會發生什麼。 –

回答

1

IV的大小取決於模式,但通常是它與塊大小大小相同。有些模式與此不同,特別是GCM模式,默認大小爲12字節,但可以採用任意大小的IV。

然而,像CBC和CFB這樣的老式學校模式只需要與塊大小相同的IV。即使點擊率通常也需要16個字節,但是原則上IV可以是小於16的任何大小,在這種情況下,它(通常)正確填充零值字節。

無論密鑰大小如何,AES的塊大小都是16字節。說你有AES-256和一個32字節的密鑰是僞造的信息。對於AES-256,密鑰大小必須爲爲32個字節。

如前所述,CFB模式IV必須始終爲16字節,因爲AES是128位塊密碼。與Rijndael密碼相比,AES在塊大小方面受到限制。 Rijndael可能配置了不同的塊大小。