Криптографический алгоритм шифрования по мастер-паролю
Чем хорош RSA, например, то с ним можно использовать любой «мастер-ключ», так как там открытый и закрытый ключ взаимозависимые, а не как, например, в протоколе Эль-Гамаля.

Но тут будет проблема. Для программы, которая сама хранит пароли, хранить еще информацию о ключе шифрования ключей (мастер-ключе) — как-то небезопасно.
Лучше использовать другой подход. А именно стойкую (!) криптографическую хэш-функцию (так проще и информации о мастер-ключе почти не будет в программе) и симметричный алгоритм шифрования (3DES, AES, любой другой, который будет понятен для реализации. Даже ГОСТ28147-89 подойдет. Для всех них в сети много максимально разжеванных алгоритмов).

Теперь собственно протокол работы программы.

Шифрование: 
Есть сообщение M, содержащее пользовательский пароль, который необходимо хранить в программе. 
Шифруется оно случайно созданным ключом шифрования K.
К в свою очередь шифруется ключом шифрования ключей (мастер-ключом). 
Ключ шифрования ключей — пусть будет результат воздействия стойкой криптографической хэш-функции H() на фразу-пароль P.

Расшифрование:
Я беру фразу-пароль P. 
Беру от нее хэш H(P).
Расшифровываю разовый ключ шифрования данных K с помощью H(P) в качестве ключа.
Расшифровываю с помощью K хранимое сообщение М, содержащее пароль.

Возможные проблемы: 
стойкость хэш-функции
равномерное распределение ГПСЧ

В остальном, будет очень даже увлекательное занятие. Для меня бы точно было таким =)
А если для хранения данных использовать списки и деревья, то преподаватели будут довольны)))
Нормально! ключ 2кбита да и асимметричное, оно медленно для потокового шифрованная, но для хранения малых объемов информации норма! Сам делал на рса, правда смотря как будешь делать: все руками или используя сторонние готовые библиотеки