Использование TypeConverter
может быть полезным. Я написал класс с именем DecryptedString
, который упаковывает класс String, и внутренний класс Converter, который обрабатывает процессы шифрования / дешифрования.
class DecryptedString(var value: String = "") {
class Converter {
@TypeConverter
fun decrypt(encrypted: String): DecryptedString {
return DecryptedString(TripleDesEncrypt.decrypt(encrypted, Params.TRIPLE_DES_KEY))
}
@TypeConverter
fun encrypt(decrypted: DecryptedString): String {
return TripleDesEncrypt.encrypt(decrypted.value, Params.TRIPLE_DES_KEY)
}
}
}
Затем вместо использования типа String
для поля body
необходимо использовать DecryptedString
введите свой MessageModel
класс.
@Entity
data class MessageModel(
@PrimaryKey
var uid: Int,
@TypeConverters(DecryptedString.Converter::class)
@ColumnInfo(name = "decrypted_body")
var body: DecryptedString
//Other fields
)