Где можно сохранить данные в приложении приватно

«Где можно сохранить данные в приложении приватно» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android есть несколько способов сохранить данные приватно:

  1. SharedPreferences - для небольших данных (настройки, флаги)
val prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE)
prefs.edit().putString("key", "value").apply()
  1. Internal Storage - файлы доступны только вашему приложению
val file = File(filesDir, "secret.txt")
file.writeText("confidential data")
  1. SQLite/ Room - база данных с шифрованием (используйте SQLCipher)
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}
  1. EncryptedSharedPreferences (AndroidX Security) - зашифрованные SharedPreferences
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val sharedPrefs = EncryptedSharedPreferences.create(
    context,
    "secret_prefs",
    masterKey,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)

Для максимальной безопасности используйте биометрию или аппаратные ключи (KeyStore) для шифрования.