Я хочу использовать зашифрованную базу данных SQLite в Qt. Можно ли подключиться к базе данных QSqlDatabase
и использовать SQLCipher для шифрования или дешифрования базы данных? например, регулярно я подключаюсь к файлу базы данных SQLite следующим образом:
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE","Main_Connection" );
db.setDatabaseName( "Main.sqlite" );
db.open();
Я хочу знать, возможно ли использовать SQLCipher API для расшифровки базы данных и использовать модуль базы данных Qt для подключения и манипулирования базой данных?
Поскольку API-интерфейс один и тот же, вы должны иметь возможность создавать драйвер QITE SQLITE с SQLCipher без изменений. Единственные предостережения,
http://sqlcipher.net/sqlcipher-api/
Если вы работаете в Linux и не можете (или не хотите) изменять систему, то измените сценарий конфигурации в sqlite), чтобы он нашел заголовки sqlcipher и связал их с правильной библиотекой libsqlcipher. Например, это изменение позволяет мне создавать плагин SQLite с помощью SQLCipher,
--- a/configure
+++ b/configure
@@ -4736,12 +4736,12 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
if [ "$CFG_SQL_sqlite" != "no" ]; then
SQLITE_AUTODETECT_FAILED="no"if [ "$CFG_SQLITE" = "system" ]; then
- if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists sqlite3 2>/dev/null; then
+ if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists sqlite3override 2>/dev/null; then
QT_CFLAGS_SQLITE=`$PKG_CONFIG --cflags sqlite3 2>/dev/null`
QT_LFLAGS_SQLITE=`$PKG_CONFIG --libs sqlite3 2>/dev/null`
else
- QT_CFLAGS_SQLITE=
- QT_LFLAGS_SQLITE="-lsqlite3 -lz"+ QT_CFLAGS_SQLITE="-I/usr/include/sqlcipher"+ QT_LFLAGS_SQLITE="-lsqlcipher -lz"fi
if compileTest unix/sqlite "SQLite" $QT_LFLAGS_SQLITE $QT_CFLAGS_SQLITE; then
if [ "$CFG_SQL_sqlite" = "auto" ]; then
Затем вам нужно настроить с -system-sqlite
Других решений пока нет …