2015-06-30 2 views
1

Я использую шифрование AES256 с режимом CFB. Я должен использовать 32-байтовый ключ. Но я немного запутался в отношении вектора инициализации. Сколько байтов вектора инициализации следует использовать с AES256? Это 16 байт или 32 байта?Какой размер вектора инициализации необходим для шифрования AES256 в java?

Любой пример кода будет оценен по достоинству.

+3

Обычно размер IV представляет собой размер блока, который всегда равен 128 бит (= 16 байт) в AES, даже если размер ключа больше размера блока. – Marwie

+0

Почему вы смущены? Попробуйте передать IV, длина которого не равна 16 байтам, и посмотрите, что произойдет. –

ответ

1

Размер IV зависит от режима, но обычно размер такого же размера, как размер блока. Есть режимы, которые отличаются от этого, особенно режим GCM, который имеет размер по умолчанию 12 байт, но может принимать любой размер IV.

В старых школьных режимах, таких как CBC и CFB, просто требуется IV размера, такого же, как размер блока. Даже CTR обычно требует 16 байтов, хотя в принципе IV может быть любого размера менее 16, и в этом случае он (опять же, обычно) правильно дополняется нулевыми байтами.

Размер блока AES составляет 16 байт, независимо от размера ключа. Утверждение, что у вас есть AES-256, а ключ из 32 байтов - ложная информация. Для AES-256 размер ключа должен быть be 32 байт.

Режим IV для CFB - как указано ранее - всегда должен быть 16 байт, поскольку AES - это 128-битный блочный шифр. AES ограничен в отношении размера блока по сравнению с шифром Rijndael. Rijndael может быть сконфигурирован с различными размерами блоков.

Смежные вопросы