
Да вроде все просто.. Нет?
Возможно, я чего-то не учел, но на мой взгляд вполне подойдет и такая схема:
- пограмма генерирует достаточно большое случайное число (неплохо бы здесь использовать
не просто rand), которое и использует для шифрования самой базы;
- само же это число дополнительно шифруется паролем каждого из пользователей
и тоже дописывается в файл (т.е. оно будет сохранено в файле n раз, по числу
пользователей, зашифрованное разными ключами).
Собственно, все.
Конечно же, пароли пользователей в базе хранить не надо. А проверять их правильность
можно, например, по хэшу расшифрованного ими ключа, который можно хранить и незашифрованным.
Ну или базы, расшифрованной расшифрованным предварительно ключом.
Существенным недостатком этого подхода является то, что его криптостойкость определяется
самым _слабым_ ключом. Что, в принципе, характерно для всех схем подобного рода.
P.S. Раз уж речь зашла о нескольких пользователях, то, надо полагать, будут и
админы? :) Т.е. пользователи будут отличаться правами? И, соответственно, добавлять
новые учетные записи/сбрасывать забытые пароли смогут только \'избранные\'? :)