У меня была такая же проблема. Мое приложение может иметь несколько запущенных экземпляров одновременно. Из-за этого я не могу просто зашифровать файл sqlite db и покончить с этим. Я также не верю, что шифрование данных в python является хорошей идеей, так как вы не можете делать никаких серьезных манипуляций с данными в базе данных, находясь в этом состоянии.
С учетом этих ограничений я предложил следующие два решения:
1) Используйте ранее упомянутый SQLCipher. Проблемы, которые я вижу здесь, состоят в том, что мне придется написать свои собственные привязки для Python и скомпилировать их самостоятельно (или заплатить плату). Я мог бы сделать это в любом случае, так как это было бы отличным решением для других разработчиков Python. Если мне это удастся, я отправлю обратно с решением.
2) Если вариант 1 слишком сложен для меня или требует слишком много времени, я буду использовать этот метод. Этот метод не так безопасен. Я буду использовать pycrypto для шифрования файла базы данных. Я буду реализовывать SQL-сервер, который будет расшифровывать файл базы данных, а затем обрабатывать запросы от различных клиентов. Всякий раз, когда нет ожидающих запросов, он перешифрует базу данных. В целом это будет медленнее, и база данных будет временно дешифрована.
Надеюсь, что эти идеи помогут следующему парню.
РЕДАКТИРОВАТЬ 1/13/2013
Я отказался от SQLCipher, потому что не мог заставить его скомпилироваться, и кодовая база пытается использовать OpenSSL, который, в то время как звуковая библиотека, довольно массивен для кодовой базы для простого AES 128. *
Я нашел другую опцию wxSQLite3 и узнал, как выделить только часть шифрования SQLite: https://github.com/shenghe/FreeSQLiteEncryption. Я смог заставить это скомпилировать и работать (с последней версией SQLite3). wxSQLite3 также поддерживает AES 256, что действительно здорово. Следующим моим шагом будет попытка скомпилировать pysqlite (библиотека sqlite, которая встроена в python) с измененным sqlite3.dll. Если это сработает, я настрою pysqlite для поддержки расширенной части шифрования файла wxSQLite3 sqlite3.dll. В любом случае, я постараюсь обновить эту ветку с моими результатами, и в случае успеха я опубликую окончательную базу кода с инструкциями по сборке на Github.