Шифрование не использует пароль, оно использует ключ. Расшифровка не приводит к автоматическому возникновению исключения, когда ключ неверен, это означает, что ключ может быть извлечен из зашифрованных данных, и это сделает шифрование бессмысленным. Дешифрование всегда будет давать результат, но это будет случайный мусор, если ключ не является правильным.
(Как отметил Ремус, заполнение последнего блока можно использовать для перехвата неверных данных, но некоторые файлы вообще не нуждаются в заполнении, а иногда неправильные данные могут создавать что-то, похожее на правильное заполнение.) 1003 *
Где вы получаете исключение? Это при попытке загрузить расшифрованные данные в виде изображения? В этом случае вы не можете полагаться на это как на 100% безопасный способ определения правильности ключа, так как существует небольшая вероятность того, что случайные данные могут сформировать что-то, что может быть загружено в виде изображения.
Хранение контрольной суммы MD5 исходных данных вместе с зашифрованными данными также не является хорошей идеей. Это означает, что у вас есть информация о исходных данных, которая не зашифрована и может использоваться для взлома ключа.