如何保护加密Room数据库?

时间:2019-07-06 07:17:17

标签: java android database

因此,我使用下面的代码使用[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

1 个答案:

答案 0 :(得分:-1)

默认情况下,Room将数据存储在应用程序的内部存储中,任何root用户都可以访问。

要在android中安全加密Room数据库,您需要使用cwac-saferoom这样的加密库。

相关问题