请注意,AccountManager
默认情况下不受任何加密方法的保护。那里的密码以纯文本形式存储。
一般来说,在Android设备本地存储敏感数据始终存在受到威胁的风险。但是,有几个选项可以通过使黑客更难以提取应用程序的敏感数据来降低风险。一旦你加密了你的数据,一个常见的问题就是你需要一种隐藏你的加密密钥的方法。 Android的Keystore
系统可以提供帮助。
Android Keystore系统允许您将私钥存储在容器 中,以便从设备中提取更加困难。一旦密钥在 密钥库中,它们可以用于加密操作,并且 私钥资料保持不可导出。
我建议查看Ophio的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();
}
看看this article的详细信息,确保您在SharedPreferences
保存信息。
在本地数据库中存储用户名和密码的最佳方式,存储密码已加密。 –