SQLiteでの暗号化には、次のソリューションが見つかりました。
検討したソリューションのうち、SEE、SQLiteCrypt、およびSQLiteCryptoにはライセンスが必要です。 SQLCipherはCommunity Editionで使用できますが、libcryptoが必要です。
私の意見では、提示されたリストから最も興味深いソリューションは
QtCipherSqlitePluginです。
プラグインはオンザフライで暗号化し、Qt APIに完全に統合されます。
プラグインは、SQLiteソースコードとwxWidgetsのwxSQLite3に基づいており、LGPL 2.1ライセンスの下でリリースされています。
暗号化アルゴリズムとして、
Advanced Encryption Standard(AES)が使用されます。
プラグインの組み立てとインストール
1.ソースコードQtCipherSqlitePluginをダウンロードします
git clone github.com/devbean/QtCipherSqlitePlugin.git
2.必要なバージョンのソースQtをダウンロードします(例では4.8.6)
wget download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz
3.結果のアーカイブを解凍します
tar zxvf qt-everywhere-opensource-src-4.8.6.tar.gz
4. QtCreatorでプロジェクトを開きます
QtCipherSqlitePlugin \ sqlitecipher \ sqlitecipher.pro
5.ソースディレクトリQtを指定する
QtCipherSqlitePlugin \ sqlitecipher \ qt_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
6.プロジェクトをまとめる
7.プラグインライブラリをプラグインディレクトリQtにコピーします
私の場合、ディレクトリ/ usr / lib / x86_64-linux-gnu / qt4 / plugins / sqldrivers
プラグインを使用する
1.パフォーマンスを確認する
QtCipherSqlitePlugin / test / test.proプロジェクトからアプリケーションを実行し、利用可能なドライバーのリストにSQLITECIPHERデータベースドライバーが表示されていることを確認します。
(「QSQLITE」、「SQLITECIPHER」)
1:「AAA」
2:「BBB」
3:「CCC」
3:「DDD」
4:「EEE」
5:「FFF」
6:「GGG」
2.暗号化されたデータベースを作成する
テストアプリケーションの実行中に作成されたファイル
test_c.dbを削除します。
test.proプロジェクトのmain.cppコードで、データベースに接続する前にパスワードを設定します。
dbconn.setPassword("password");
アプリケーションを起動すると、テストデータベースが作成されます。 閉じて、パスワードを変更し、再起動すると、間違ったパスワードでデータベースにアクセスできないことがわかります。
未解決の問題
このパスワードを使用して、すでに作成され暗号化されたデータベースのパスワードを変更する方法は不明のままです。