greenDAO的使用详解---(4)greenDAO3.2.2结合sqlcipher加密数据库

greenDAO的使用详解—(4)greenDAO3.2.2结合sqlcipher加密数据库

1.SQLCipher介绍

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

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

greenDAO从3.0.0版本开始就支持sqlcipher

3.加密数据库的使用

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

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

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

4.源码查看分析

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

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

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

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

5.代码下载地址

源码下载,请点击这里

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值