请注意,AccountManager
默认情况下不受任何加密方法的保护。那里的密码以纯文本形式存储。
通常,在 Android 设备上本地存储敏感数据始终存在被泄露的风险。但是,有一些可用的选项可以通过使黑客更难提取应用程序的敏感数据来降低您的风险。一旦你加密了你的数据,一个常见的问题是你需要一种方法来隐藏你的加密密钥。Android 的Keystore
系统可以提供帮助。
Android Keystore 系统允许您将私钥存储在一个容器中,以使其更难以从设备中提取。一旦密钥在密钥库中,它们就可以用于加密操作,而私钥材料仍然不可导出。
我建议查看 Opio 的Secure-Preferences库。该库提供了一个抽象,用于在将数据存储到之前对其进行模糊处理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();
}
查看这篇文章,了解有关保护您保存的信息的更多信息SharedPreferences
。