android中数据库的加密,通过百度都可以看到,大多都使用的是sqlcipher,好处之一是因为:1.它是开源的,免费的。2.它的运用非常简单,方便,跟sqlite的操作一样,只不过是换成了sqlcipher的包而已。
好的,废话不多说,网上的文章加密数据库,基本上都是新建一个数据库,而对已有的数据库进行加密,却少之又少。我找了好半天,也才找到下面两篇,大家可以作为参考。
这里说一下思路:加密已有的sqlite数据库,其实是对原有的数据库进行了一份拷贝。只是拷贝后的数据库有了加密功能。拷贝的话就是拷贝原有数据库的表或者数据。这里我选择拷贝表。
使用流程如下(这里以AS开发工具为例):
1.新建android工程,在app的build.gradle中加入如下代码编译代码:
dependencies {
compile 'net.zetetic:android-database-sqlcipher:3.5.7@aar'
}
我这里的sqlcipher版本是3.5.7,具体最新版可以查看 官网
2.等待编译成功后,便可在MainActivity中添加加密函数,这里注意,读取原始数据库和生成新的加密数据库不能在外部SD卡中,具体原因我还不知,我也在mainfest.xml中配置了外部读写权限和代码中书写了运行时权限,也不行。有测试可行或者知道的读者请告诉我哈。下面给出加密和读取加密数据库的函数。还有在读取数据库时路径要取绝对路径,如果是自己定义的路径,会报错(我这里ce's)。
1.MainActivity.java