跨平台加密版 SQLite 3 - wxSQLite3

转载 2011年01月18日 14:46:00

作者:高张远瞩(HiLoveS)

博客:http://www.cnblogs.com/hiloves/

转载请保留该信息

SQLite 3 开源版不带加密功能,对于一个保存在本地的数据库来说没有加密功能让人难以接受,只要用记事本打开数据库就可以看到数据库内保存的数据,对安全多多少少有一点影响。有一个办法是把内容加密后保存到数据库中,但遇到类似 like,或字段内容与字段内容比较这就不行了。治本的办法是让 SQLite 原生的支持加密。好在 SQLite 的作者预留了加密解密的相关接口,许多爱好者也自己修改源版添加加密功能。如果你也在关注,那你可能已经阅读了大量关于如何添加加密的文章,同时我也不是很通相关的技术,我就不再讲解如何修改源码了。虽然网上有大量的文章教你如何修改源码,但都没有提供编译后的 DLL 文件,或者提供的 DLL 版本过低。这里介绍一个开源项目:wxSQLite3,该项目是一个 SQLite 的 C++ warpper,它顺带将 SQLite 的加密函数实现了,并且它使用 AES 算法进行加密。你可以在这里下载到最新的包,在目录 /sqlite3/secure 下有这几个目录,aes128 目录下的 sqlite3.dll 文件,是已编译的用128位 AES 算法加密的 SQLite 3 DLL 文件,而 aes 256 目录下的是用256位 AES 算法加密的,而 src 目录下是实现加密的 SQLite 3 源代码。同时 wxSQLite3 项目更新很快,你总是可以下载到较新的包。从1.9.8版本开始将对256位 AES 加密算法进行实验,估计不久的版本就可以稳定使用。

使用起来也很简单,首先打开数据库 sqlite3_open,然后在操作数据库之前执行 sqlite3_key 后就可进行数据库操作,否则会返回错误。

sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。

int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定数据库,pKey 是密钥,nKey 是密钥长度。例:sqlite3_key( db, "abc", 3);

sqlite3_rekey是变更密钥或给没有加密的数据库添加密钥或清空密钥,变更密钥或清空密钥前必须先正确执行 sqlite3_key。在正确执行 sqlite3_rekey 之后在 sqlite3_close 关闭数据库之前可以正常操作数据库,不需要再执行 sqlite3_key。

int sqlite3_rekey( sqlite3 *db, const void *pKey, int nKey),参数同上。

清空密钥为 sqlite3_rekey( db, NULL, 0)。

 

转自 http://www.cnblogs.com/hiloves/archive/2010/04/25/1719749.html

相关文章推荐

Visual Studio 2010环境下Sqlite3加密版(由wxSqlite制作)使用方法

Sqlite3是著名的嵌入式数据库,应用之广就不多说了。本篇主要介绍如何使用加密功能。Sqlite3本身提供了加密的接口,但是加密功能并没有实现,用户要使用的话需要自己编写代码来实现加密功能。幸运的是...

使用CppSQLite3封装结合wxSQLite实现加密版的SQLite数据库操作类

最近用到SQLite数据库,刚开始想用ADO来搞,毕竟经常用,结果发现还挺麻烦,要装SQLite的ODBC驱动,装了以后还是连不上,听说这SQLite是开源项目,可以将开发库引入项目来直接操作,就在网...
  • starytx
  • starytx
  • 2017年04月11日 11:35
  • 571

Visual Studio 2010环境下Sqlite3加密版(由wxSqlite制作)使用方法

Sqlite3是著名的嵌入式数据库,应用之广就不多说了。本篇主要介绍如何使用加密功能。Sqlite3本身提供了加密的接口,但是加密功能并没有实现,用户要使用的话需要自己编写代码来实现加密功能。幸运的是...

sqlite3对数据库加密用c语言开源项目wxSQLite3实现

今天对逍遥来说是个特别的日子,有两件喜事:1、正式本科毕业啊,即将开始新的人生冒险。2、完成了对sqlite3用C语言实现的加密与读取。对数据库加密的必要性,在此就不必多说啦。仅对我在实现加密的过程中...

sqlite3对数据库加密用c语言开源项目wxSQLite3实现

今天对逍遥来说是个特别的日子,有两件喜事:1、正式本科毕业啊,即将开始新的人生冒险。2、完成了对sqlite3用C语言实现的加密与读取。对数据库加密的必要性,在此就不必多说啦。仅对我在实现加密的过程中...

Delphi使用wxsqlite3加密Sqlite3数据库

  • 2014年11月13日 11:40
  • 1.42MB
  • 下载

编译sqlite3和wxSqlite3(含加密) 【原创】

编译wxsqlite3

sqlite3070701_wxSQLite3.zip

  • 2011年08月26日 00:32
  • 2.99MB
  • 下载

wxsqlite3加密

  • 2012年06月25日 11:00
  • 4.48MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:跨平台加密版 SQLite 3 - wxSQLite3
举报原因:
原因补充:

(最多只允许输入30个字)