Delphi使用wxsqlite加密Sqlite数据库

 提起桌面数据库,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的源码:

 

       

[delphi]  view plain copy
  1. unit main;  
  2.   
  3. interface  
  4.   
  5.   
  6. uses  
  7.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  8.   Dialogs, DB, MemDS, DBAccess;  
  9.   
  10. type  
  11.   TSQLiteDB = Pointer;  
  12.   Tsqlite3=Pointer;  
  13.   TForm4 = class(TForm)  
  14.     procedure FormCreate(Sender: TObject);  
  15.   private  
  16.     { Private declarations }  
  17.   public  
  18.     { Public declarations }  
  19.   end;  
  20. const  
  21. {$IF Defined(MSWINDOWS)}  
  22.   SQLiteDLL = 'sqlite3.dll';  
  23. {$ELSEIF Defined(DARWIN)}  
  24.   SQLiteDLL = 'libsqlite3.dylib';  
  25.   {$linklib libsqlite3}  
  26. {$ELSEIF Defined(UNIX)}  
  27.   SQLiteDLL = 'sqlite3.so';  
  28. {$IFEND}  
  29. var  
  30.   Form4: TForm4;  
  31.   db: TSQLiteDB;  
  32.   function SQLite3_Open(filename: PAnsiChar; var db: TSQLiteDB): integer; cdecl; external SQLiteDLL name 'sqlite3_open';  
  33.   function sqlite3_key (  
  34.     pDb: Tsqlite3;          // Database handle  
  35.     pKey: PAnsiChar;        // Database PassWord (UTF-8)  
  36.     nKey: Integer           // Database sizeofpassword  
  37.   ): integer;  cdecl; external SQLiteDLL name 'sqlite3_key';  
  38.    function sqlite3_rekey (  
  39.     pDb: Tsqlite3;          // Database handle  
  40.     pKey: PAnsiChar;        // Database PassWord (UTF-8)  
  41.     nKey: Integer           // Database sizeofpassword  
  42.   ): integer;  cdecl; external SQLiteDLL name 'sqlite3_rekey';  
  43.    implementation  
  44.   
  45. {$R *.dfm}  
  46.   
  47. procedure TForm4.FormCreate(Sender: TObject);  
  48. begin  
  49. SQLite3_Open('ak.db',db);  //打开数据库  
  50. SQLite3_key(db,'cba',3);  //设置密码  
  51. SQLite3_rekey(db,'abc',3);  //更改密码  
  52. end;  
  53.   
  54. end.  

 

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

 

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

 

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite数据库加密解密工具是指用于对SQLite数据库进行加密和解密操作的软件工具。 SQLite数据库是一种轻型的数据库管理系统,通常用于嵌入式设备或移动应用程序中。然而,SQLite数据库默认不支持加密功能,而在某些情况下,我们需要对数据库进行加密以保护数据安全性。 为了实现SQLite数据库加密功能,可以借助一些第三方工具,如SQLCipher。SQLCipher是一款专门为SQLite数据库提供加密功能的开源软件,它基于SQLite的代码库进行了修改和扩展,使得SQLite数据库可以支持AES加密算法和SHA-256哈希算法,从而提供了强大的安全性。 使用SQLCipher加密SQLite数据库的过程包括以下几个步骤: 1. 下载并安装SQLCipher库文件。 2. 在应用程序中将原始SQLite库替换为SQLCipher库。 3. 生成一个加密密码,并将其与SQLite数据库关联。 4. 在访问SQLite数据库之前,使用密码对数据库进行解密。 5. 对数据库进行操作后,将其重新加密。 通过使用SQLCipher,我们可以为SQLite数据库提供强大的加密功能,确保数据在存储和传输过程中的安全性。同时,解密工具也可以用来解密加密SQLite数据库,以便进行数据的读取和操作。 总之,SQLite数据库加密解密工具是用于对SQLite数据库进行加密和解密操作的软件工具,可以通过使用第三方库如SQLCipher来实现数据库加密保护,提供数据的安全性和保密性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值