/SQLCipherRoom

A Room<->SQLCipher for Android Safe.

Primary LanguageJava

SQLCipherRoom

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;
        }
    }

下面演示了从/data/data/<package_name>/databases目录下面导出的DB文件通过sqlcipher加密后打开情况

img

也可直接对xxx.db文件直接加密

SQLCipherUtils.getDatabaseState(File);  // 判断文件是否加密 ENCRYPTED, UNENCRYPTED, or DOES_NOT_EXIST

SQLCipherUtils.encrypt(Context, File, char[]); // 加密