因此,我使用下面的代码使用[cwac_saferoom] [1]对数据库进行了加密 但是只要我运行它,就会出现异常
由以下原因引起:net.sqlcipher.database.SQLiteException:文件不是数据库:,正在编译:从sqlite_master选择count(*);
public static Database getDatabase(final Context context) {
SafeHelperFactory.Options options = SafeHelperFactory.Options.builder().setPreKeySql(PREKEY_SQL).build();
SafeHelperFactory factory= SafeHelperFactory.fromUser(new SpannableStringBuilder(PASSPHRASE), options);
if (INSTANCE == null) {
synchronized (Database.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
Database.class, "solarfinaDatabase")
.openHelperFactory(factory)
.fallbackToDestructiveMigration()
.build();
}
}
}
return INSTANCE;
}```
what am expecting is a database that is secured so as to avoid data penetration from my APK.
[1]: http://%20https://github.com/commonsguy/cwac-saferoom
答案 0 :(得分:-1)
默认情况下,Room将数据存储在应用程序的内部存储中,任何root用户都可以访问。
要在android中安全加密Room数据库,您需要使用cwac-saferoom这样的加密库。