SQLCipher 相比于原生 SQLite,可选择 db 加密,安全性更高,易用性基本和原生 SQLite 相当,是原生 SQLite 不错的替代品。
SQLCipher使用 256-bit AES 加密,由于其基于免费版的 SQLite,主要的加密接口和 SQLite 是相同的,也增加了一些自己的接口,唯一缺点就是使用该库之后会导致 APK 会变大6M左右。
引入
首先前往 Github:
https://github.com/sqlcipher/android-database-sqlcipher
进入其 Maven 仓库可以查看到最新的版本:
https://search.maven.org/artifact/net.zetetic/android-database-sqlcipher/4.2.0/jar
implementation 'net.zetetic:android-database-sqlcipher:4.2.0'
引入包后,其使用方式与原生 SQLite 基本一致,先构建 SqlliteHelper,然后获取 SQLiteDatabase,最后进行一系列的操作即可。
第一次使用
先注意初始化,在 Application 里初始化执行:
SQLiteDatabase.loadLibs(this);
之后是获取数据库,可以传入密钥作为参数,对数据库加密:
String key = "你的密钥";
sqlliteHelper.getWritableDatabase(key);
之后所有操作和普通原生 SQLite 基本一致,需要请百度,这里不再赘述。
已有用原生 SQLite
首先还是要注意初始化,这大概是和原生 SQLite 的唯一区别,在 Application 里初始化执行:
SQLiteDatabase.loadLibs(this);
之后将项目中的:
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
全部替换为:
import net.sqlcipher.Cursor;
import net.sqlcipher.database.SQLiteDatabase;
import net.sqlcipher.database.SQLiteOpenHelper;
之后是获取数据库,可以传入密钥作为参数,对数据库加密:
String key = "你的密钥";
sqlliteHelper.getWritableDatabase(key);