ObjectBox поддерживает шифрование данных?

Я хочу использовать objectbox в своем проекте, я хочу перейти с dbflow на objectBox, dbflow поддерживает шифрование, поддерживает ли objectBox шифрование?

2 ответа

Решение

Нет встроенной поддержки шифрования.

Есть запрос на поддержку этой функции. Мы приветствуем ваши предложения. https://github.com/objectbox/objectbox-java/issues/8

Поэтому вместо официальной поддержки шифрования базы данных со стороны objectBox мы пошли по пути шифрования полей с использованием преобразователей свойств.

Мы реализовали шифрование AES-256 для строковых полей.

На данный момент тесты производительности показывают следующее:

  • Без шифрования, 1000 объектов (13 полей / объект) пишут ~ 2740 мс
  • Зашифровано, 1000 объектов (13 полей, 6 зашифрованных) запись ~ 6434 мс
  • Без шифрования, чтение 1000 объектов (13 полей / объект) ~ 58 мс
  • Зашифровано, 1000 объектов (13 полей, 6 зашифрованных) запись ~ 70 мс

Ознакомьтесь с этой удобной библиотекой AES: https://github.com/scottyab/AESCrypt-Android

Пример класса преобразователя свойств

class EncryptionConverter : PropertyConverter<String, String> {

    override fun convertToDatabaseValue(entityProperty: String): String {
        return AESUtil.encrypt("YOUR_SUPER_SECURE_KEY" , entityProperty)
    }

    override fun convertToEntityProperty(databaseValue: String?): String {
        return AESUtil.decrypt("YOUR_SUPER_SECURE_KEY" , databaseValue)
    }
}

Ваше поле в классе сущности будет выглядеть примерно так

@Convert(converter = EncryptionConverter::class, dbType = String::class)
    var username : String = ""

Также помните, что с шифрованием поля вы отказываетесь от возможности частичного поиска поля

В настоящее время ObjectBox зависит от функций безопасности Android, в том числе от песочницы и зашифрованного хранилища (зависит от версии Android). Дополнительные усилия должны быть отслежены в

это последнее состояние для этого вопроса от greenrobot

Другие вопросы по тегам