Можно ли использовать QSqlDatabase вместе с SQLCipher?

Я хочу использовать зашифрованную базу данных SQLite в Qt. Можно ли подключиться к базе данных QSqlDatabase и использовать SQLCipher для шифрования или дешифрования базы данных? например, регулярно я подключаюсь к файлу базы данных SQLite следующим образом:

QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE","Main_Connection" );
db.setDatabaseName( "Main.sqlite" );
db.open();

Я хочу знать, возможно ли использовать SQLCipher API для расшифровки базы данных и использовать модуль базы данных Qt для подключения и манипулирования базой данных?

2

Решение

Поскольку API-интерфейс один и тот же, вы должны иметь возможность создавать драйвер QITE SQLITE с SQLCipher без изменений. Единственные предостережения,

  1. имена библиотек и заголовочных файлов совпадают, доступны и
  2. вы инициализируете параметры шифрования вручную с помощью директив PRAGMA 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]