Google推出的Room作为Android平台的一款对象关系映射框架 并不支持sqlcipher,需要我们使用第三方库来支持
对使用Room生成的数据库加密方法集成方法
private static SafeHelperFactory factory = new SafeHelperFactory(passphrase);
public static UserDatabase getINSTANCE(Context context) {
synchronized (sLock) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(),
UserDatabase.class, DATABASE_NAME)
.openHelperFactory(factory) //encrypt
.fallbackToDestructiveMigration()
.build();
}
return INSTANCE;
}
}
加密后的DB文件导出后打开可以看到需要输入密码
image.png
也可直接对xxx.db
文件直接加密
SQLCipherUtils.getDatabaseState(File); // 判断文件是否加密 ENCRYPTED, UNENCRYPTED, or DOES_NOT_EXIST
SQLCipherUtils.encrypt(Context, File, char[]); // 加密
源码下载# SQLCipherRoom
网友评论