美文网首页
greenDAO的使用详解---(4)greenDAO3.2.2

greenDAO的使用详解---(4)greenDAO3.2.2

作者: lidiwo | 来源:发表于2017-11-24 15:50 被阅读0次

    1.SQLCipher介绍

    SQLCipher是一个在SQLite基础之上进行扩展的开源数据库,它主要是在SQLite的基础之上增加了数据加密功能,如果我们在项目中使用它来存储数据的话,就可以大大提高程序的安全性。SQLCipher支持很多种不同的平台,这里仅介绍Android中SQLCipher在greenDAO3.2.2的用法。

    2.使用greenDAO3.2.2结合sqlcipher加密数据库说明

    greenDAO从3.0.0版本开始就支持sqlcipher


    image

    3.加密数据库的使用

    在我们做全局初始化的时候,如果不做加密,调用getWritableDatabase()方法获取未加密的SQLiteDatabase,如果我们需要做加密,只需要调getEncryptedWritableDb()方法获取加密的Database就可以,当我们只修改这一处时候,运行会发现报以下错误:


    image

    原因:greenDAO3.2.2中没有引入sqlcipher加密库,我们需要在自己的工程中引入该库


    image
    至此,我们加密数据库已经完成,是不是很简单。

    4.源码查看分析

    1. 通过查看getEncryptedWritableDb()方法的源码我们发现,getEncryptedWritableDb()方法是通过EncryptedHelper类获取的Database,而EncryptedHelper类是集成net.sqlcipher.database.SQLiteOpenHelper(该类由sqlcipher库提供),所以我们的要使用加密数据库,必须依赖sqlcipher库。


      image
      image
    2. 通过跟踪DevOpenHelper类的onUpgrade()方法,我们发现,我们做数据库升级的时候,最终调用的是DatabaseOpenHelper类的onUpgrade()方法,但是该类中的onUpgrade()方法体中没有任何代码,升级方法留给子类


      image

      而我们做加密数据库升级的时候,onUpgrade()方法是在EncryptedHelper中调用


      image
      因此在升级方法中获取到的Database 是已经解密的,然后交给MigrationHelper做数据转移。

    5.代码下载地址

    源码下载,请点击这里

    相关文章

      网友评论

          本文标题:greenDAO的使用详解---(4)greenDAO3.2.2

          本文链接:https://www.haomeiwen.com/subject/pglfbxtx.html