1. 下载加密插件QtCipherSqlitePlugin
2.编译成插件库
- 编译出dll文件:使用qtcreator打开pro文件,在选择项目的编译器,在debug模式下编译。
- 将插件加入到qt:找到
sqlitecipher/plugins/sqldrivers/sqlitecipher.dll文件,将其加入到qt目录下qt\5.15.2\mingw81_64\plugins\sqldrivers。(自己选择对应版本)
- 检测插件是否加载成功:运行代码
qDebug() << QSqlDatabase::drivers(),出现"SQLITECIPHER"代表插件加入成功。
3.使用插件
QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
dbconn.setDatabaseName("test.db");
dbconn.setPassword("test");
//将原本没有加密的数据库文件进行加密,此代码只需执行一次
dbconn.setConnectOptions("QSQLITE_CREATE_KEY");
dbconn.open()
//其他代码不变,只需要修改这一句就可以了
dbconn.setConnectOptions("QSQLITE_REMOVE_KEY");
//其他代码不变,只需要修改这一句在后面加上新的密码即可
dbconn.setConnectOptions("QSQLITE_UPDATE_KEY=newtest");
//等同于删除密码
dbconn.setConnectOptions("QSQLITE_UPDATE_KEY=");
/*
QSQLITE_USE_CIPHER的可选值分别为:
aes128cbc AES 128 Bit CBC – No HMAC (wxSQLite3)
aes256cbc AES 256 Bit CBC – No HMAC (wxSQLite3)
chacha20 ChaCha20 – Poly1305 – Poly1305 HMAC (sqleet)
sqlcipher AES 256 Bit CBC – SHA1 HMAC (SQLCipher)
*/
dbconn.setConnectOptions("QSQLITE_USE_CIPHER=sqlcipher");