- PVSM.RU - https://www.pvsm.ru -
Для шифрования в SQLite были найдены следующие возможные решения:
Из рассмотренных решений SEE, SQLiteCrypt and SQLiteCrypto требуют приобретения лицензии. SQLCipher доступен в версии Community Edition, но требует libcrypto.
Наиболее интересным решением из представленного списка, на мой взгляд, является QtCipherSqlitePlugin.
Плагин шифрует «на лету» и полностью интегрирован в API Qt.
Плагин базируется на исходниках SQLite а также wxSQLite3 из wxWidgets и выпущен под лицензией LGPL 2.1.
В качестве алгоритма шифрования используется Advanced Encryption Standard (AES) [8].
git clone https://github.com/devbean/QtCipherSqlitePlugin.git
wget https://download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz
tar zxvf qt-everywhere-opensource-src-4.8.6.tar.gz
QtCipherSqlitePluginsqliteciphersqlitecipher.pro
В файле QtCipherSqlitePluginsqlitecipherqt_p.pri в строчках
# Qt4
!greaterThan(QT_MAJOR_VERSION, 4): INCLUDEPATH += <Qt4_Path>/src/sql/kernel
# Qt5
greaterThan(QT_MAJOR_VERSION, 4): INCLUDEPATH += <Qt5_Path>/Src/qtbase/src/sql/kernel
Задать соответствующие пути к исходникам Qt. В моем случае для Qt4 получилась строка
/home/developer/Sources/qt-everywhere-opensource-src-4.8.6/src/sql/kernel
В моем случае в директорию /usr/lib/x86_64-linux-gnu/qt4/plugins/sqldrivers
Запустив приложение из проекта QtCipherSqlitePlugin/test/test.pro убеждаемся, что драйвер базы данных SQLITECIPHER появился в списке доступных драйверов.
(«QSQLITE», «SQLITECIPHER»)
1: «AAA»
2: «BBB»
3: «CCC»
3: «DDD»
4: «EEE»
5: «FFF»
6: «GGG»
Удаляем файл test_c.db, созданный в ходе выполнения приложения test.
В коде main.cpp проекта test.pro перед подключением к БД устанавливаем пароль.
dbconn.setPassword("password");
Запускаем приложение, будет создана тестовая БД. Закрываем его, меняем пароль, повторно запускаем, видим, что доступа с неверным паролем к БД нет.
Осталось непонятным, как поменять пароль для уже созданной и зашифрованной по этому паролю БД.
Автор: snasoft
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/qt-2/83255
Ссылки в тексте:
[1] SEE: https://www.sqlite.org/see/doc/trunk/www/index.wiki
[2] wxSQLite: http://sourceforge.net/projects/wxsqlite/files/
[3] SQLCipher: https://www.zetetic.net/sqlcipher/
[4] SQLiteCrypt: http://sqlite-crypt.com/documentation.htm
[5] botansqlite3: https://github.com/OlivierJG/botansqlite3
[6] SQLiteCrypto: http://www.andbrain.com/product/sqlitecrypto/
[7] QtCipherSqlitePlugin: https://github.com/devbean/QtCipherSqlitePlugin
[8] Advanced Encryption Standard (AES): https://ru.wikipedia.org/wiki/Advanced_Encryption_Standard
[9] Источник: http://habrahabr.ru/post/216739/
Нажмите здесь для печати.