2017-11-27 3 views
0

質問Realm Browser(windows)に暗号化されたレルムファイルを開こうとすると、次のメッセージが表示されます。レルムデータベースの復号化に失敗しました

これはレルムファイルではないか、暗号化されています。

は、入力します。

重要キー128文字の16進エンコードされた暗号化 - を私はディスク上に保存する前に自分のレルムを閉じています。

コード

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を使用して暗号化されたレルムファイルを開くしようとしたが、それでも私は、レルムを開くことができないのですファイル。

ここに何か不足していますか?

答えて

3

暗号化キーを16進数でエンコードする必要がありますが、Base64ではエンコードする必要はありません。

あなたはここでそれを行う方法を見ることができます:https://github.com/realm/realm-java/pull/5571

関連する問題