领域数据库解密失败 [英] Realm database decryption failed

查看:124
本文介绍了领域数据库解密失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题:当我尝试在Realm Browser(Windows)中打开加密的领域文件时,它会显示以下消息.

Question : When I try to open encrypted realm file in Realm Browser (windows) and it gives me following message.

这不是Realm文件,还是已加密.

Either this is not a Realm file or it's encrypted.

输入:128个字符的十六进制编码加密密钥

重要- 我要先关闭领域,然后再保存到磁盘上.

Important - I am closing my realm before saving on disk.

代码

RealmConfiguration config = new RealmConfiguration.Builder()
            .name("w5uyqFyEDEK_OCWyl4123aa77")
            .schemaVersion(2)
            .encryptionKey(myClassObject.getRealmKey())
            .deleteRealmIfMigrationNeeded()
            .build();

方法

 public byte[] getRealmKey() {
    byte[] key;
    String savedKey = getStringFromPrefs(KEY);
    if (savedKey.isEmpty()) {
        key = generateKey();
        String keyString = encodeToString(key);
        saveStringToPrefs(keyString);
    } else {
        key = decodeFromString(savedKey);
    }
    return key;
}



 private void saveStringToPrefs(String aKeyString) {
    pref.edit().putString(KEY, aKeyString).apply();
}

private String encodeToString(byte[] aKey) {
    AppLogger.d("Encoding Key: %s", Arrays.toString(aKey));
    return Base64.encodeToString(aKey, Base64.DEFAULT);
}

private byte[] decodeFromString(String aSavedKey) {
    byte[] decoded = Base64.decode(aSavedKey, Base64.DEFAULT);
    AppLogger.d("Decoded Key: ", Arrays.toString(decoded));
    return decoded;
}

private byte[] generateKey() {
    byte[] key = new byte[64];
    new SecureRandom().nextBytes(key);
    return key;
}

我尝试使用存储在preferencebyte[] decodedKey中的key打开加密的领域文件,但是仍然无法打开领域文件.

I have tried to open encrypted realm file using key stored in preference and byte[] decodedKey but still I am not able to open realm file.

我在这里想念东西吗?

推荐答案

您需要对加密密钥进行十六进制编码,而不是对Base64进行编码.

You need to Hex encode your encryption key, not Base64 encode it.

您可以在此处查看操作方法: https://github.com/realm/realm-java/pull/5571

You can see how to do it here: https://github.com/realm/realm-java/pull/5571

这篇关于领域数据库解密失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆