IV позволяет зашифровать открытый текст, так что зашифрованный текст будет сложнее расшифровать злоумышленнику. Каждый бит IV, который вы используете, удваивает возможности зашифрованного текста из данного простого текста.
Например, давайте зашифруем «привет мир», используя длину в один символ IV. IV выбирается случайным образом, чтобы быть «х». Затем зашифрованный текст называется «мир xhello», что, скажем, asdfghjkl. Если мы снова зашифруем его, сначала сгенерируем новый IV - скажем, на этот раз мы получим «b» - и зашифруем как обычно (таким образом зашифровав «мир bhello»). На этот раз мы получаем «qwertyuio».
Дело в том, что злоумышленник не знает, что такое IV, и поэтому должен вычислить все возможные IV для данного простого текста, чтобы найти соответствующий текст шифра. Таким образом, IV действует как соль пароля . Чаще всего IV используется с цепочечным шифром (потоковым или блочным шифром). В цепочечном блочном шифре результат каждого блока простого текста подается в алгоритм шифрования, чтобы найти текст шифра для следующего блока. Таким образом, каждый блок объединяется в цепочку.
Итак, если у вас есть случайный IV, используемый для шифрования простого текста, как вы расшифровываете его? Просто. Передайте IV (в виде простого текста) вместе с вашим зашифрованным текстом. Используя наш первый пример выше, окончательный текст шифра будет 'xasdfghjkl' (IV + текст шифра).
Да, вы должны использовать IV, но не забудьте выбрать его правильно. Используйте хороший источник случайных чисел, чтобы сделать это. Никогда не используйте один и тот же IV дважды. И никогда не использует константу IV.
Статья в Википедии о векторах инициализации содержит общий обзор.