存储脱机应用程序的密码

时间:2014-02-18 09:22:22

标签: android passwords sharedpreferences

我正在开发一个应用程序,用户可以在远程位置使用它。我创建了一个启动对话框,要求输入密码。我将密码保存在SharedPreferences

我的问题是,这样做是个好主意吗?或者有更好的方法来存储离线应用程序的密码吗?

因为当我尝试在设置中清除我的应用数据时 - >应用程序,SharedPreferences中保存的密码也将被删除。

3 个答案:

答案 0 :(得分:1)

您可以散列密码并将其存储在文件中

搜索像MD5或..

这样的哈希函数

答案 1 :(得分:1)

您的应用程序基本上清晰的数据是清理您在SharedPreferences中存储的内容,这是正常的。使用SharedPreferences存储数据非常有用,但拥有root设备的人可以访问这些数据(基本上是“/ data / data / app_packages”中的xml文件存储)。 然后,您必须考虑在使用SharedPreferences存储密码之前加密密码。

答案 2 :(得分:1)

  

我的问题是,这样做是个好主意吗?

通常,以明文存储密码不是一个好主意, 即使它是一个离线应用程序,有时也会被清除。 就像之前提到的那样,当设备植根时,可以从您的Applicatoin存储中提取所有信息甚至数据库。 即使该应用程序的内容是微不足道的,有人可以做上面提到的,只是为了查看你使用的密码,所以他/她可以尝试破解你的其他帐户。 如果有更多人使用此应用程序,情况尤其如此。

如果您了解并且确定,那么您肯定可以使用SP或DB。 如果你想在正确的方向做某事,你可以加密密码, 或哈希它们(虽然我建议不要使用MD5,但是像SHA2,Whirlpool,RipeMD2甚至PBKDF2这样的东西)。 使用像SQLCipher这样的加密数据库也很不错,因为你必须只设置一次,并将所有内容添加到你的应用程序中 之后会自动加密存储。

如果您唯一担心的是您不想删除密码,那么,如果您没有服务器通信,则必须承担这种风险:)