
Я же писал выше о нескольких пользователях
. Наверное, не очень понятно получилось. :) Попробую изложить свои мысли яснее.
:)
Программа генерирует случайный ключ - К. Именно он используется для шифрования
самой базы. А потом к зашифрованной этим ключом базе дописывается сам ключ, зашифрованный
паролями пользователей. Схематично файл данных будет выглядеть так:
<база, зашифрованная ключом К>
<ключ К, зашифрованный паролем А>
<ключ К, зашифрованный паролем Б>
...
Соответственно, при загрузке базы программа сначала по логину пользователя определяет
какую запись с зашифрованным ключом нужно использовать. Потом с помощью пароля,
введенного пользователем, она расшифровывает сам ключ. И, наконец, с помощью
ключа расшифровывается база.
В итоге мы имеем независимые пароли для всех пользователей. Плюс никакие исправления
в самой программе не помогут врагу :) добраться до содержимого базы. Если использованный
алгоритм шифрования достаточно криптостойкий, то все, что останется для взлома
базы - перебирать пароли пользователей. Вот здесь становится важным то, что самый
_слабый_ из паролей определяет общую защищенность базы.