2015-12-09 12 views
5

Ich habe Realm Datenbank in meiner Anwendung verschlüsselt. Ich möchte den Verschlüsselungsschlüssel ändern. Ist der richtige Weg, dies zu tun, eine Kopie der Realm Datei mit neuen Verschlüsselungsschlüssel oder gibt es eine andere Option zur Verfügung?Aktualisieren/Ändern Realm-Verschlüsselungsschlüssel

Danke.

Antwort

3

Ja, Sie müssen eine Kopie der Realm-Datei mit dem neuen Verschlüsselungsschlüssel erstellen. Das Verfahren wird writeEncryptedCopyTo() genannt: https://realm.io/docs/java/latest/api/io/realm/Realm.html#writeEncryptedCopyTo-java.io.File-byte:A-

So etwas wie die folgenden funktionieren sollte:

RealmConfiguration config1 = new RealmConfiguration.Builder(context) 
    .name("old-name") 
    .encryptionKey(getOldKey()) 
    .build() 

Realm realm = Realm.getInstance(config1); 
realm.writeEncryptedCopyTo(new File(context.getFilesDir(), "new-name"), getNewKey()); 
realm.close(); 

RealmConfiguration config2 = new RealmConfiguration.Builder(context) 
    .name("new-name") 
    .encryptionKey(getNewKey()) 
    .build() 
+0

Ich möchte meine Datenbank halten, den gleichen Namen, so schreibe ich auf temporäre Datei kopieren, dann die Originaldatei löschen und dann benenne die tmp-Datei um. Realm verwendet jedoch den Konfigurationscache basierend auf dem Pfad. Gibt es eine Möglichkeit, das zurückzusetzen? – Niko

+0

Mein Fehler, die Realm-Instanz wurde nicht früh genug geschlossen, um sie zu entfernen :) – Niko