QtCipherSqlitePlugin编译及使用方法

QtCipherSqlitePlugin编译及使用方法

项目上需要对sqlite进行加密处理,通常使用SQLCipher库对sqlite进行加密,Qt提供了对SQLCipher封装好的插件QtCipherSqlitePlugin,通过该插件可以像使用sqlite一样对数据库进行操作。

一.QtCipherSqlitePlugin编译

1.下载

下载地址:
https://github.com/devbean/QtCipherSqlitePlugin

2.编译

QtCipherSqlitePlugin插件提供了qtcreator的编译工程

  • QtCipherSqlitePlugin.pro
    可以直接使用qtcreator进行编译,也可使用vs进行编译,本文使用vs2019进行编译,如下图所示,使用vs打开QtCipherSqlitePlugin.pro文件。
    在这里插入图片描述
    工程里包含三个项目,第一个sqlitecipher为插件dll,其他两个为测试工程,依次编译即可。
    在这里插入图片描述
    编译完成后需要将生成的sqlitecipher.dll放入Qt安装目录下的/plugins/sqldrivers中,否则后面在使用该插件时,qt会加载不到该dll。

二.使用方法

​ 使用该插件对加密数据库加载依然使用QSqlDatabase类,区别在于添加的驱动不一样,而对数据库插入、删除等sql语句操作依旧使用QSqlQuery,附部分代码。

	QString DB_FILE_PATH =  "D:/test.db";
    QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");//添加SQLITECIPHER驱动
    dbconn.setDatabaseName(DB_FILE_PATH); //localDB.db is already existing before running the application
    dbconn.setPassword("1234");//设置密码
    dbconn.setConnectOptions("QSQLITE_USE_CIPHER=sqlcipher;SQLCIPHER_LEGACY=1; SQLCIPHER_LEGACY_PAGE_SIZE=4096; QSQLITE_CREATE_KEY");//设置选项
	dbconn.open();
	dbconn.close();

该段代码即可以创建一个密码为1234的加密db,也可以为已经存在的db设置密码。

其中,QSQLITE_USE_CIPHER为加密算法,取值为如下5种:

  • aes128cbc
  • aes256cbc
  • chacha20
  • sqlcipher
  • rc4
    QSQLITE_CREATE_KEY为创建密码,QSQLITE_REMOVE_KEY为移除密码,QSQLITE_UPDATE_KEY为更新密码。
    注意:SQLCIPHER_LEGACY=1; SQLCIPHER_LEGACY_PAGE_SIZE=4096;需要写上,如果不写的话,使用代码创建的db,用SQLiteStudio无法打开,不知道什么原因,欢迎知道原因的评论区留言。
    更新密码示例
	QString DB_FILE_PATH =  "D:/test.db";
    QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");//添加SQLITECIPHER驱动
    dbconn.setDatabaseName(DB_FILE_PATH); //localDB.db is already existing before running the application
    dbconn.setPassword("1234");//设置密码
    dbconn.setConnectOptions("QSQLITE_USE_CIPHER=sqlcipher;SQLCIPHER_LEGACY=1; SQLCIPHER_LEGACY_PAGE_SIZE=4096; QSQLITE_UPDATE_KEY=pass");//设置选项
	dbconn.open();
	dbconn.close();

QSQLITE_UPDATE_KEY等于的部分为新密码。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值