Длина вектора инициализации в AES
Я использовал AES с AES / CBC / PKCS5Padding со следующими разделами кода шифрования и дешифрования в Android:
<code>cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(IV1)); cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(IV2)); </code>
где IV1 и IV2 - случайно сгенерированные 16-байтовые векторы инициализации. Я сделал это, чтобы проверить, будут ли исходные и дешифрованные тексты отличаться друг от друга, используя разные IV для сторон шифрования и дешифрования Это приводит к тому, что байты расшифрованного текста будут такими же, как и у исходного текста после первых 16 байтов. Например, если оригинальный текст:
<code>Enter your message here... </code>
Расшифрованный текст:
<code>*****************ge here... </code>
где * обозначает неправильно расшифрованный байт, как и должно быть, поскольку IV1 и IV2 различны.
Мой вопрос: что делать, чтобы зашифровать и расшифровать текст длиной более 16 байтов, используя AES с вектором инициализации?