Я не понимаю, как это будет работать. Любая двусторонняя функция шифрования будет расшифровываться только при подаче определенного пароля, используемого для шифрования (если только вы не являетесь АНБ и не отошли в алгоритмы). У вас не может быть двух паролей, расшифровывающих один и тот же файл (если нет коллизий хешей, но это не то, что вы можете легко осуществить).
Что касается хранения вашего мастер-пароля в программе, было бы гораздо лучше хранить его в отдельном файле, который читает программа, так что вы можете использовать более строгую защиту на уровне ОС для этого файла.
Имейте в виду, что mcrypt не является криптографией с открытым ключом. Однако с помощью криптографии с открытым ключом вы можете делать то, что хотите. Например, с PGP / GPG вы можете зашифровать файл так, чтобы три разных пользователя могли расшифровать его, используя свои личные ключи, не зная личных ключей друг друга. Таким образом, у вас может быть виртуальный пользователь с мастер-паролем, который может расшифровать все.
Другой вариант - хранить две копии всех зашифрованных данных; один зашифрован паролем пользователя, а другой зашифрован мастер-паролем.