Я вручную создал базу данных SQLite (с именем localDB.db) и защитил ее паролем, используя DB browser .Если я не ошибаюсь, браузер БД использует SQLCipher (с размером страницы по умолчанию 1024) для шифрования базы данных.Однако, если я пытаюсь открыть базу данных с помощью плагина QT QtCipherSqlitePlugin (см. Следующий код), я всегда получаю сообщение об ошибке «пароль неверен или шифр не совпадает», хотя я, очевидно, предоставляю правильныйпароль и установить шифр как "sqlcipher".
#include <QCoreApplication>
#include <QDebug>
#include <QDir>
#include <QSqlError>
#include <QtSql/QSqlDatabase>
#ifdef Q_OS_IOS
#include <QtPlugin>
Q_IMPORT_PLUGIN(SqliteCipherDriverPlugin)
#endif
#define CONNECTION_FAILED -1
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << QSqlDatabase::drivers();
QString dir = QCoreApplication::applicationDirPath();
QString db_file_path = dir + "/Data/localDB.db";
qDebug() << "DB file path is:" << db_file_path;
QSqlDatabase db = QSqlDatabase::addDatabase("SQLITECIPHER");
db.setDatabaseName(db_file_path);
db.setPassword("test");
db.setConnectOptions("QSQLITE_USE_CIPHER=sqlcipher");
db.open();
if (!db.isOpen())
{
qDebug() << "Connection failed: " << db.lastError().driverText();
exit(CONNECTION_FAILED);
}
return 0;
}
То же самое происходит для обратного процесса: если я зашифрую базу данных с помощью этого плагина, то я не могу вручную открыть базу данных с помощью браузера БДили другие подобные программы, потому что он не принимает пароль.
Как я могу решить эту проблему?Мне нужно получить доступ к зашифрованной базе данных SQLite через мое программное обеспечение и стороннее приложение, такое как браузер БД.Заранее спасибо.