我已经通过this问题和类似的问题,但我仍然无法弄清楚这一点。如何将加密应用于Android中的现有领域数据库?
早些时候我使用SQLite
为我的android应用程序。预填充的Sqlite数据库的大小为约为15 MB。我制作了一个临时的android应用程序,将我的记录复制到一个新的Realm数据库中。这个新的Realm数据库的大小约为150 MB。然后我用Mac中的Realm浏览器打开它并压缩它。大小现在减少到15 MB。
但是,如果我在创建新数据库时使用加密并将sqlite行复制到其中,则大小约为150 MB。当我使用十六进制密码打开它时,它打开罚款。然后我将它压缩到更早 - >大小恢复到正常15 MB。但是,我不知道为什么,的加密现在被删除了。
为了解决这个问题,我只能想到一个解决方案。如果我可以对已压缩的Realm数据库应用加密。但是,我无法弄清楚,如何在Android中做到这一点?
编辑 - 一些相关部件 -
第1部分 -
Realm.init(this);
byte[] key = new byte[64]; // Just for demonstration
RealmConfiguration config = new RealmConfiguration.Builder()
.name("QBank.realm")
.directory(getExternalFilesDir(null))
.encryptionKey(key)
.build();
Realm realm = Realm.getInstance(config);
部分 -
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button_sqlite2realm:
DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
databaseAccess.open();
questionsList = databaseAccess.getAllQuestions();
databaseAccess.close();
Realm realm = Realm.getInstance(config);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
for (QuestionBank question : questionsList){
realm.copyToRealmOrUpdate(question);
}
}
});
break;
}
}
加密的数据库转换为压缩数据库 - >我把这种境界来自android模拟器的数据库 - >在Realm浏览器中打开它(使用十六进制密码) - >压缩(但是这是新的创建的压缩数据库现在不加密)
P.S. - 我知道我的问题是描述性的,但我找不到一种方法来做到这一点。
你关闭你的领域数据库?如果可能的话分享你的代码复制? –
对不起,我没有得到你。你是指从'sqlite'复制到'realm'或从加密到压缩的代码? –
@PravinD,我已经更新了我的问题,并提供了相关信息。 –