Ключ шифрования для просмотра файла realm на Mac с помощью Realm browser

#java #android #realm

#java #Android #realm

Вопрос:

Я использую Realm для своего приложения Android, я хочу просмотреть файл default.realm на моем Mac с помощью Realm browser, однако он запрашивает ключ шифрования. введите описание изображения здесьЯ не выполняю шифрование в конфигурации Realm явно, предоставляя «.EncryptionKey (ключ)». Тогда какой ключ шифрования я должен предоставить? Существует ли какое-либо шифрование по умолчанию? Я использую плагин Realm 2.0.2 в Android Studio, а мой браузер Realm 2.0.1 на Mac. Я также пытался предоставить EncryptionKey (ключ), подобный этому, в своем коде:

 byte[] key = new byte[64];
new SecureRandom().nextBytes(key);
RealmConfiguration config = new RealmConfiguration.Builder()
.encryptionKey(key)
.build();
  

И попытался предоставить тот же хэш (длина 128) браузеру, чтобы открыть файл, но безуспешно. Я нашел ответы в SO, связанные с тем, как получить файл с помощью adb pull, но я ничего не знаю об этой части шифрования. Любая помощь в этом отношении была бы отличной.

Комментарии:

1. Похоже, ваш файл Realm поврежден. Вы скопировали файл, когда он был открыт?

2. Я скопировал файл, когда подключил свой телефон к Mac и выполнял отладку через Android Studio. Я использовал эту команду для копирования содержимого файла, поскольку мой телефон не был внедрен. ./adb shell «запуск от имени <имя пакета> cat /data/data/<имя пакета>/files/default.realm» > ~/default.realm

3. Спасибо @geisshirt за совет. Я думал, что он был зашифрован все время. С вашим советом я понял, что это было из-за коррупции.

Ответ №1:

Проблема заключалась в том, что файл был поврежден. Сообщение об ошибке от Realm browser вводило в заблуждение, запрашивая ключ шифрования.

Поскольку мой телефон не был внедрен, я не смог получить файл напрямую с помощью adb pull.

 adb pull /data/data/<packagename>/files/ .
  

Я использовал другую команду, скопировав содержимое в файл в моей системе, что привело к повреждению.

Вот команда, которая, наконец, сработала для меня.

 ./adb exec-out run-as <packagename> cat /data/data/<packagename>/files/default.realm > ~/Documents/foo/foo.realm
  

Я не вводил exec-out в команду раньше, что стало причиной повреждения.