Android SQLite加密
来源:互联网 发布:乐乎公寓 编辑:程序博客网 时间:2024/06/06 16:55
最近因为一些项目的安全性需要将数据库加密,一开始想到的就是先将数据库通过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源码目录下运行:
$. build/envsetup.sh
这样就可以初始化环境
4、去到这个源码目录,运行:
$mm
这样就可以编译,生成结果在out\target\product\generic\system\lib\libsqlcrypt_jni.so
本来还想生成x86的库,因为出现一些问题,还没空去解决。
源码下载地址:https://github.com/lendylongli/android-sqlite-encrypt
- android sqlite加密
- Android SQLite加密
- Android SQLite加密--SQLCipher
- Android 加密数据库 sqlite
- android sqlite 数据库 加密分析
- android中的sqlite数据库加密
- Android数据库(sqlite)加密方案
- Android中对sqlite加密--SQLCipher
- 关于android sqlite 加密的研究
- Android 使用Sqlcipher给Sqlite加密
- Android加密已有的sqlite数据库---sqlcipher
- sqlite加密
- SQLite加密
- SQLite 加密
- SQLite加密
- SQLite加密
- SQLite加密
- SQLite加密
- 记录一次expdp错误
- Oracle数据库中Sessions and Processes的概念总结
- 起泡排序(冒泡排序)图解
- Linux时间子系统
- RewriteCond指令格式
- Android SQLite加密
- C语言-time.h从头学
- php 换行符
- 向VS2010项目中添加类库文件(Class Library)
- MFC error C2665: “AfxBeginThread”
- DBA_ERRORS错误一例
- Apache Rewrite 详解RewriteCond
- java/scala远程调试
- 网络图片异步加载(用到多线程(线程池),java回调机制,图片缓存,图片的动画)