博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android数据库(sqlite)加密方案
阅读量:6876 次
发布时间:2019-06-26

本文共 936 字,大约阅读时间需要 3 分钟。

hot3.png

最近因为一些项目的安全性需要将数据库加密,一开始想到的就是先将数据库通过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] 
  1. $. build/envsetup.sh  
这样就可以初始化环境
4、去到这个源码目录,运行:
[plain] 
  1. $mm  

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

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

源码下载地址:

转载于:https://my.oschina.net/lendylongli/blog/126081

你可能感兴趣的文章
编程题:用函数实现,用户输入年月日,来计算出该日期为当年第几天?
查看>>
Pro Android学习笔记(十一):了解Intent(中)
查看>>
小程序混合框架HERA1.1.0发布
查看>>
linux下svn+rsync+inotify实现代码自动同步
查看>>
MYSQL主从+amoeba读写分离(一)
查看>>
tomcat并发量和内存的关系
查看>>
J2EE操作系统调优
查看>>
linux服务器校验时间
查看>>
闭包与柯里化
查看>>
ExtJS <1> HelloWord
查看>>
squid配置及说明文档,很好很详细
查看>>
Trufun UML工具代码生成功能视频演示
查看>>
Log4j按级别输出日志到不同文件配置分析
查看>>
搭建nginx服务器
查看>>
java 运行 jar classpath配置
查看>>
go thrift oprot.Flush() not enough arguments in
查看>>
使用 Tomcat 7 新的连接池 —— Tomcat jdbc pool
查看>>
Spring MVC 介绍
查看>>
博客用途声明---重要
查看>>
linux .la .lo文件以及libtool介绍
查看>>