_NT ответ довольно близок к тому, как вы, вероятно, хотите это сделать, но (IMO) не совсем правильно.В частности, если вы используете мастер-пароль для шифрования других паролей, вы должны всегда ввести мастер-пароль для расшифровки файла.
По крайней мере, когда я прочитал то, что вы сказали,что вы действительно хотите - это ввести либо пароль файла, либо (если вы забудете это) мастер-пароль.Это также возможно, но работает немного по-другому.Для этого вы обычно хотите сгенерировать случайный ключ, который используется для шифрования содержимого самого файла.Затем вы шифруете этот ключ с помощью пароля файла и сохраняете зашифрованный ключ вместе с файлом.Вы отдельно шифруете ключ с помощью мастер-пароля и сохраняете этот зашифрованный ключ вместе с файлом.
Когда приходит время расшифровывать файл, пользователь должен ввести пароль файла, использовать его для расшифровкиключ и расшифрованный ключ для расшифровки файла.Если они забыли ключ файла, они вводят мастер-пароль.Вы используете это, чтобы расшифровать ключ, который был зашифрован с помощью мастер-пароля, и использовать этот ключ для расшифровки файла.
Как вы можете легко видеть, этот метод будет поддерживать произвольное количество отдельных паролей, а не только два,Например, вы можете использовать это для многопользовательского доступа к зашифрованному файлу.Каждый пользователь, который должен получить доступ к файлу, имеет свой зашифрованный ключ, сохраненный вместе с файлом, и каждый использует свой собственный пароль для доступа к файлу.