Mah*_*ake 4 java encryption aes
我正在CFB模式下使用AES256加密。我必须使用32字节密钥。但是我对初始化向量有点困惑。AES256应该使用多少个字节的初始化向量?是16个字节还是32个字节?
任何代码示例将不胜感激。
TL; DR:CFB模式下的AES需要16字节的唯一(但不一定是随机的)IV。
IV的大小取决于模式,但通常与块大小相同,对于AES来说,块大小始终为 16个字节。有一些与此模式不同的模式,特别是GCM模式,其默认大小为12字节,但可以采用任何大小的IV-尽管强烈建议保持默认值。
但是,诸如CBC和CFB之类的老式模式仅需要与块大小相同的IV。即使CTR通常也需要16个字节,尽管原则上IV的大小可以小于16,在这种情况下,通常用零值字节正确填充IV。请注意,CTR通常使用初始计数器值进行初始化,这意味着您必须确保自己不会重复该计数器。
无论密钥大小如何,AES的块大小均为16个字节。说您具有AES-256和32字节的密钥是虚假信息。对于AES-256,密钥大小必须为256位或32个字节。
如前所述,CFB模式的IV必须始终为16个字节,因为AES是128位的块密码。与Rijndael密码相比,AES在块大小方面受到限制。Rijndael可以配置为具有不同的块大小。
| 归档时间: |
|
| 查看次数: |
6914 次 |
| 最近记录: |