• Android数据库(sqlite)加密方案


    最近因为一些项目的安全性需要将数据库加密,一开始想到的就是先将数据库通过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 argetproductgenericsystemliblibsqlcrypt_jni.so

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

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

  • 相关阅读:
    mustache.js 使用
    iscroll4 input textarea不能获得焦点问题
    object-fit?
    window.open()被拦截问题
    JSONP
    mouseenter和mouseover的区别
    前端页面卡顿-代码优化
    如何设置html中img宽高相同-css
    iscroll使用之页面卡顿问题
    iScroll的简单使用
  • 原文地址:https://www.cnblogs.com/liniuzen/p/3974310.html
Copyright © 2020-2023  润新知