在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
SQLite是一个很好用的单机数据库,体积小巧,支持大多数SQL 92语法,速度快,健壮,使用和分发都很简单。但是免费开源版并不提供加密功能,需要加密得购买原作者的一个插件,价格$2000!我们只好使用第三方的加密版本,这是被逼的。当然还有一个选择就是,在开源的C文件中已经预留了加密接口,有能力的可以自己去实现。 闲话休提。第三方的加密版本已经有人实现了,还不止一个。下面分别介绍一下: ※ SQLite原装版,http://www.sqlite.org/ 目前最新版本是
※ 第三方其一是用于.NET环境下的System.Data.SQLite.DLL。它是为了.NET开发的,不过也集成了原生SQLite.DLL,把它改名为sqlite3.dll,直接就可以拿来用了。因为使用了Windows的API来加密,所以不能跨平台,但是Delphi的程序本来就不能跨平台:)。目前版本1.0.60.0,无源文件,使用的SQLite版本应该是 ※ 第二种实现是wxSQLite3。它是跨平台的wxWidgets 开源函数库的一部分,在Win32平台也工作得很好。使用MD5 + RC4 + 128位AES加密算法,提供cpp源文件。目前版本是 ※ Delphi数据库控件ZeosLIB,是一个用来连接数据库的第三方开源控件包,据说是用来取代BDE的,确实好用,但据反映在一定情况下可能有内存泄漏问题。目前版本是 下面终于可以开始进入正题了,在Delphi 7中如何调用SQLite的加密函数? 首先,安装Zeos控件包,把我们的支持加密的SQLite3.DLL文件copy到程序目录下。这里要跳出来说明一下的是,对于SQLite3加密函数的调用,在Zeos 在程序上放一个TZconnection,名为Zconnection1,设置连接数据库的参数,这些就不废话了。又跳出来一下:据说SQLite3是使用UTF8编码,所以如果数据库放在中文目录下,则调用路径必须进行编码转换才行;但是用Zeos连接SQLite,放在中文目录下都没问题。搞不好Zeos已经自动把编码搞定了?太贴心了。 1、打开加密的数据库 var db: Pointer; pwd: string; i: integer; begin pwd := 'xxxxxx'; ZConnection1.Connected := true; db := (ZConnection1.DbcConnection as IZSQLiteConnection).GetConnectionHandle; i := (ZConnection1.DbcConnection as IZSQLiteConnection).GetPlainDriver.Key(db, PChar(pwd), Length(pwd)); ……………… 2、给未加密的数据库加密或修改密码 procedure RekeyDB(conn: TZConnection; pwd: string); var db: Pointer; i: integer; begin db := (conn.DbcConnection as IZSQLiteConnection).GetConnectionHandle; i := (conn.DbcConnection as IZSQLiteConnection).GetPlainDriver.ReKey (db, PChar(pwd), Length(pwd)); If (i <> 0) then // 函数正常执行返回0,否则 begin // xxxxxxx end;; end; 注:IZSQLiteConnection 的定义在ZDbcSqLite单元。
以上。最后要注意的就是对SQLite3.DLL的加密实现各不相同,DLL文件可是不能混用的。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论