Обратите внимание, что по умолчанию метод AccountManager
не защищен никаким методом шифрования. Пароли хранятся в текстовом виде.
В общем, хранение конфиденциальных данных локально на устройстве Android всегда подвержено риску. Тем не менее, есть несколько доступных вариантов, которые могут снизить риск, затрудняя для хакеров извлечение конфиденциальных данных приложения. Как только вы зашифровали свои данные, общая проблема заключается в том, что вам нужен способ скрыть ключ шифрования от простого вида. Система Android Keystore
может помочь с этим.
Система Keystore Android позволяет хранить личные ключи в контейнере , чтобы сделать его сложнее извлечь из устройства. После того, как ключи находятся в хранилище ключей, они могут использоваться для криптографических операций с оставшимся неэкспортируемым личным материалом .
Я рекомендую проверить библиотеку Secure-Preferences Ophio. Библиотека предоставляет абстракцию для обфускации ваших данных перед ее хранением в SharedPreferences
и KeyStoreKeyGenerator
для шифрования ключа шифрования. Сохранение пароля пользователя локально может выглядеть примерно так:
private static void stashPassword(Application application, String password) {
String secretKey = null;
try {
secretKey = KeyStoreKeyGenerator.get(application, "KeyFilename")
.loadOrGenerateKeys();
} catch (Exception exception) {
// handle error
}
SharedPreferences preferences = new ObscuredPreferencesBuilder()
.setApplication(application)
.obfuscateValue(true)
.obfuscateKey(true)
.setSharePrefFileName(PREFERENCES_NAME)
.setSecret(secretKey)
.createSharedPrefs();
preferences.edit().putString(KEY_PASSWORD, password).apply();
}
Взгляните на this article для получения дополнительной информации о защите информации вы сохраните в SharedPreferences
.
лучший способ сохранить имя пользователя и пароль в локальной базе данных с паролем хранилища в зашифрованном виде. –