Ответы:
Нет, нет необходимости в уникальном ключе для каждого пароля - и это не будет полезно, поскольку ваш ключ должен где-то храниться. Вы также можете хранить пароль в этой безопасной системе.
Вы не должны хранить ключ в той же системе с теми же условиями доступа, что и пароль. Это сделало бы зашифрованное хранилище бесполезным. Вы должны поместить ключ в другое место, защищенное от злоупотреблений, и выполнить шифрование в этой системе.
Вам гораздо лучше выбрать такую функцию, как PBKDF2, и сохранить результат. Управление ключами - сложная задача, и ее нельзя выбирать без хорошей идеи о том, как действовать (нанять профессионала, если вы идете по этому пути).
Наконец, вся идея IV заключается в том, что он защищает простой текст, когда используется тот же ключ . Вы можете установить IV на все нули, если у вас есть ключ для каждой пары простой текст / зашифрованный текст. Однако идея заключается в том, что вы используете один ключ, сохраненный где-то, кроме сохранения, и случайный IV, сохраненный с зашифрованным текстом.
Как уже говорилось, если вы еще этого не знали, то ваша схема небезопасна, потому что есть много других вещей, которые следует учитывать, и вы, вероятно, не знали.
PS У Microsoft есть несколько способов надежного хранения ключей в системе, для этого вам может потребоваться поиск в стеке. Однако я не эксперт по MS API.