Qt Sqlite加密数据库驱动源代码

时间:2017-04-30 11:03:53
【文件属性】:

文件名称:Qt Sqlite加密数据库驱动源代码

文件大小:1.35MB

文件格式:7Z

更新时间:2017-04-30 11:03:53

Qt Sqlite 加密 驱动 Driver

这是我工作了一天的成果,压缩包内包括Qt sqlite加密驱动所有的代码,以及一个调用例程,还有一个sqlite3shell.exe工具,用于加密数据库命令行下的分析。 使用这个加密驱动很简单,只需以下3步: 1. 将驱动的代码复制到你的app文件夹(共2个文件夹) 2. 在app的pro文件中加入 include(wxsqlite3/wxsqlite3.pri) include(zsqlitecipherdriver/zsqlitecipherdriver.pri) 3. 在需要的地方加入#include "zsqlitecipherdriver.h",这样就可以使用ZSQLiteCipherDriver类了,这个类是继承自QSqlDriver。所以可以传递给 QSqlDatabase::addDatabase。 详细的可以查看压缩包内源码。之后,main函数就可以这么使用sqlite的加密驱动: ZSQLiteCipherDriver *driver = new ZSQLiteCipherDriver(); QSqlDatabase db = QSqlDatabase::addDatabase(driver); db.setDatabaseName("test.db"); db.setPassword("123"); db.open(); ... 加密驱动的稳定性没有问题,是我从Qt的开源代码中,找到Sqlite没加密的驱动部分,然后修改的。修改的内容不多,最重要的是在数据库的open时,加入了sqlite3_key的调用,实现加密。 底层的加密实现,是来自wxsqlite3-3.0.6。这个我修改了一个宏定义,让其加密方式采用了AES256,而不是原来的AES128。 例程中包括了3个实用的函数,分别用来以某一密码打开或创建一个数据库,判断数据库是否处于解密状态,以及修改数据库密码。 sqlite3shell.exe跟官方提供的sqlite3.exe使用方法一样。只不过对于加密数据库,需要在对数据库进行任何操作前,先执行“PRAGMA key=xxx;”。通过这种方式输入数据库密码。检验之前的密码是否正确可以在命令行中键入“.databases”,如果没有错误提示,那就是解密成功了;如果密码错误,只能关闭sqlite3shell.exe,从头尝试了。 虽然这个资源,要的分数确实有点多,不过评价之后就能返还的。我相信这个资源值这个价值!下载后在Qt5上可以直接编译。不需要任何修改。Qt4上没试过,不承诺一定可用,但是应该没问题。


【文件预览】:
ZSqliteCipherDriverExample
----wxsqlite3()
--------codec.c(19KB)
--------rijndael.c(100KB)
--------sqlite3.h(345KB)
--------rijndael.h(7KB)
--------sqlite3secure.c(2KB)
--------sha2.h(5KB)
--------wxsqlite3.pri(384B)
--------sqlite3.c(4.91MB)
--------codecext.c(11KB)
--------sha2.c(32KB)
--------codec.h(3KB)
----sqlite3shell.exe(832KB)
----ZSqliteCipherDriverExample.pro(219B)
----main.cpp(4KB)
----zsqlitecipherdriver()
--------zsqliteciphercachedresult.h(3KB)
--------zsqliteciphercachedresult.cpp(8KB)
--------zsqlitecipherdriver.pri(277B)
--------zsqlitecipherdriver.cpp(24KB)
--------zsqlitecipherdriver.h(4KB)
----readme.txt(2KB)

网友评论

  • 学习学习,谢谢的分享
  • 赞一个,很好用
  • 挺好的,使用qt5.7静态库编译通过
  • 经测试可用。。。。。。
  • 资源不错,在5.6.0上面编译通过! 遗憾的是只支持 #define CODEC_TYPE_AES128 1 #define CODEC_TYPE_AES256 2 两种加密方法。 加密后只能用这个加密库打开,其他第三方的数据库管理软件无法打开。 还需要自己写一个数据库管理的软件。
  • 很好,qt5.6.0顺利编译通过并运行
  • 很给力,在QT5可以使用,很好的资源。
  • 下来用了下,Qt5以上版本可以用,Qt4以下版本编译不过
  • 楼主加密可以,但我又一个问题 怎样跟你私信呢?
  • 不错的资源 帮了大忙
  • 太好了,可以使用,很好,感谢楼主分享!
  • 谢谢楼主分享劳动成果
  • 最后没有用到它。 不过看代码应该都是好的
  • 不错的资源,谢谢分享!
  • 已加密成功,收藏了
  • 很不错,就是使用是出现了点问题。
  • 可用,有些许问题望请教。已发私信
  • 很好,学习了,非常感谢
  • 亲测加密成功,感谢
  • 看起来挺好的 但是qt4直接编译不通 ‘QSqlCachedResult’ has not been declared #include <QtSql/private/qsqlcachedresult_p.h> 就提示另一个错误~ 可能要用qt5 才行~
  • 谢谢楼主分享劳动成果
  • 加密学习,很实用,谢谢你的分享。thank you
  • 帮我的大忙了,这个方法是新创建driver类,直接加载新类,一切正常,Thanks!
  • 谢谢楼主分享劳动成果
  • 帮我的大忙了,原来我是改QT sqlite插件源码来实现加密,可是在arm上运行直接挂掉,而你这个方法则是新创建driver类,直接加载新类,一切正常,Thanks