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