码迷,mamicode.com
首页 > 移动开发 > 详细

Android数据库(sqlite)加密方案

时间:2014-09-16 10:35:40      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:android   style   http   color   使用   ar   strong   文件   数据   

最近因为一些项目的安全性需要将数据库加密,一开始想到的就是先将数据库通过AES加密,然后运行时再解密,另一种是将数据库里的内容加密。

很快这两种方案都是不理想的,第一种加密方式形同虚设,第二种,如果加密的字段是要查找数据就变得麻烦。

所以第三种方案就是在内存里解密,在网上查到SQLITE是支持加密的, 所以就根据网上的指导一步步地将SQLITE编译成支持加密的。

那下一步就是怎样做成SDK去方便使用?第一个念头就是将原生的数据库使用方式移植过来,但做起来比开始想像的难了点,但最终也在修修补补中完成了移植工作。一开始是使用Android2.2的数据库模块源码,但运行时会经常有一些问题出现,后来使用Android4.0的数据库模块源码就解决了这些问题,当然,在开始是在Android4.0源码编译时,在Android4.0以上的手机运行是没问题,但在Android4.0以下就会报错。所以逼不得意就将Android4.0数据库模块移到Android2.2源码目录下编译,当然少不了要解决版本兼用的一些问题。

Android原生是不支持数据库加密的,所以要想加密数据库就需要使用其它的方式。而这个SDK是从原生Android4.0源码里单独移植SQLITE模块,并将这个模块编译时加入加密方法,因为SQLITE源码中是有加密的接口,所以移植时就只需将这个预编译参数加入和一些文件即可。

这个SDK只支持Android2.1以上的版本。

编译环境:
Android2.2源码
Ubuntu12.10 64位


1、同步Android2.2源码(大概4G容量)
2、安装必需的依赖库
3、在Android2.2源码目录下运行:

[plain]  view plain copy print ?

  • $. build/envsetup.sh  



这样就可以初始化环境 
4、去到这个源码目录,运行:[plain]  view plain copy print ?

  • $mm  

 

这样就可以编译,生成结果在out\target\product\generic\system\lib\libsqlcrypt_jni.so

本来还想生成x86的库,因为出现一些问题,还没空去解决。

源码下载地址:https://github.com/lendylongli/android-sqlite-encrypt

Android数据库(sqlite)加密方案

标签:android   style   http   color   使用   ar   strong   文件   数据   

原文地址:http://www.cnblogs.com/liniuzen/p/3974310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!