关于sqlite 加密
在移动设备上,不管是ios还是android大家都喜欢使用sqlite,它体积小功能却不错,满足大家的需求。但是使用过大家都清楚免费版sqlite数据是明文的,如果存放的是用户敏感信息,只要取出应用中的数据库,神马用户名,密码都一目了然。
那么你还敢使用手机登录什么网银神马的么??
使用免费版本的没有加密模块,如果需要加密模块,需要大大们支付2000$,收费sqlite叫做 SEE,The SQLite Encryption Extension (SEE),链接?看下面咯.
SQLite数据库设计中考虑了安全问题并预留了加密相关的接口。但是并没有给出实现。SQLite 数据库源码中通过使用SQLITE_HAS_CODEC宏来控制是否使用数据库加密。并且预留了四个结构让用户自己实现以达到对数据库进行加密的效果。这四个接口分别是:
sqlite3_key(): 指定数据库使用的密钥
sqlite3_rekey():为数据库重新设定密钥用于为数据库重新设定密钥;
sqlite3CodecGetKey():返回数据库的当前密钥
sqlite3CodecAttach(): 将密钥及页面编码函数与数据库进行关联。
Android数据库访问框架图如下所示:
苦逼的程序们做好准备实现这几个接口了么?
如果你还没有动手写代码,那么恭喜你,下面有几种方法可以不要那么幸苦了。使用开源的wxSQLite,这哥们帮我们做了加密的工作,并且开源了,大家可以下载使用。
wxSQLite把 SQLite 嵌入式数据库与 wxWidgets 结合起来,使用 C++ 语法对 SQLite 数据库的 C API 进行了封装,而且作为 wxWidgets 的一个组件,自然很好的融合了其特点,使得 wxWidgets 与 SQLite 数据库配合使用.不过是需要编译生成。
SQLCipher 整个给钱吧。。。不用考虑了
SQLiteCrypt 免费的。狂欢吧
botansqlite3 这个介绍很少,作者呢 说他的项目和bodan一起分发。
下面是链接咯。
- SEE - 官方实现咯.
- wxSQLite - wxWidgets + c++ 实现加密
- SQLCipher - 使用开放 openSSL's 库实现加密
- SQLiteCrypt - 修改与API
- botansqlite3 - botansqlite3 is an encryption codec for SQLite3 that can use any algorithms in Botan for encryption.