Еще лучше: используйте хеш (например, SHA256), чтобы зашифровать сам файл (например, используя AES256), и добавьте хеш файла открытого текста (может быть что угодно, даже простой CRC) в зашифрованный файл.
Чтобы расшифровать:
- Запросить пароль у пользователя
- Хешировать пароль с помощью SHA256
- Расшифровать файл, используя хэш пароля в качестве ключа
- Вычисление CRC расшифрованного файла
- Если вычисленный CRC соответствует тому, что было добавлено после текста шифра, пароль был правильным.Если они не совпадают, ключ не был хорошим, и вы расшифровали мусор, что означает, что пароль не был хорошим.
В качестве бонуса, не нужно где-то хранить «секретный» ключ, этовсе самодостаточно.Плюс грубая атака / атака по словарю болезненна, потому что вам нужно расшифровывать весь файл для каждой попытки проверить CRC.