Есть ли способ отловить ошибку, Ошибка расшифровки файла Realm. Там может быть большой шанс, когда ключ дешифрования недоступен, и Царство выдает эту ошибку. Как отловить эту ошибку и удалить существующую область и создать новую с новым ключом шифрования. Для тестирования я сохранил ключ области в общих настройках и получил ключ шифрования в классе приложения перед тем, как инициализировать объект области. Но иногда ключ, который я получаю, является другим, или нулевым, или пустым, и Царство выдает ошибку. Как справиться с этой ситуацией?

с : Когда я пытаюсь открыть зашифрованный файл области вRealm Browser (окна), и это дает мне следующее сообщение.

Либо это не файл Realm, либо он зашифрован.

Введите: 128-значный ключ шифрования в шестнадцатеричном формате

Важный - Я закрываю свою область перед сохранением на диск.

Код

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

Я пытался открыть зашифрованный файл области, используяkey Хранится вpreference а такжеbyte[] decodedKey но я все еще не могу открыть файл области.

Я что-то здесь упускаю?

Ответы на вопрос(1)

Решение Вопроса

а не Base64.

Вы можете увидеть, как это сделать здесь:https://github.com/realm/realm-java/pull/5571

 Sniper06 нояб. 2018 г., 13:49
Есть ли способ отловить ошибку, Ошибка расшифровки файла Realm. Там может быть большой шанс, когда ключ дешифрования недоступен, и Царство выдает эту ошибку. Как отловить эту ошибку и удалить существующую область и создать новую с новым ключом шифрования. Для тестирования я сохранил ключ области в общих настройках и получил ключ шифрования в классе приложения перед тем, как инициализировать объект области. Но иногда ключ, который я получаю, является другим, или нулевым, или пустым, и Царство выдает ошибку. Как справиться с этой ситуацией?

Ваш ответ на вопрос