Delphi使用wxsqlite加密Sqlite数据库

来源:互联网 发布:网上试衣间软件 编辑:程序博客网 时间:2024/06/06 03:35

      提起桌面数据库,Sqlite谁都知道,但对于它的加密一直困扰着很多人,而delphi的加密使用范例更少。在网上混了两天,查找了一些Sqlite加密的相关资料,也知道了wxsqlite这个东西,它是一个sqlite3.dll的嵌入扩展,重要的是里面加入了对Sqlite的AES 128bit-256bit加密扩展,而且用的是Sqlite预留的函数接口,这意味着什么呢?UniDAC从3.5.14版本以后加入了对encrypted sqlite的支持,这功能支持 SEE/CEROD这样使用预留接口开发的加密功能的第三方扩展,也就是说wxsqlite同样能被UniDAC所支持,这意味着你就不用再去改UniDAC的源代码了,wxsqlite可以在我这下载http://download.csdn.net/source/3215472

 

      下面说说具体的使用方法,下载后你可以在sqlite3/secure目录下找到AES128和AES256两个文件夹,分别包含两种加密类型扩展的库文件,找到sqlite3.dll,然后放到你要调用的路径,然后下面是我随便Copy修改后的delphi的源码:

 

       

 

      不过我下载的最新版本的wxsqlite里已经编译好的sqlite3.dll中,sqlite3_key函数好像是空的,不起作用,后来查了查,是自己在使用UniDAC时直接链接了,所以我直接试着调用了sqlite3_rekey实现了对数据库的加密,加密后的数据库再用记事本打开时已经是乱码了,然后用数据库工具查看时会提示“数据库已经加密”。要更改密码的话首先得把所有多余的链接断掉,然后先Open数据库,再用sqlite3_key设置用来操作数据库的原密码,这样获得操作权之后就能用sqlite3_rekey设置新的密码了。

 

      接下来说说UniDAC里怎么链接加密后的数据库。上面说了,UniDAC3.5.14以后的版本加入了Sqlite的encryption功能,所以在添加链接的时候你在specificOption项里可以将option项中的encryptionkey参数设置为你的数据库密码,这样链接数据库后你就可以随意操作了。

 

      有时间再把这些东西整整,做个直接加密的工具,以后就能非常方便的加密自己的数据库了!

原创粉丝点击