我最近在Android上创建了一个应用程序,它有一个登录页面。它完全脱机,因此在线或基于网络的解决方案对我没有帮助。我认为有两种方法可以完成这项任务。
但是,在我看来,这两种方式都可能不安全,因为用户可以在DDMS中加载我的应用程序的数据目录,然后取出我的首选项或数据库文件,然后尝试操作它。
现在,我的问题是:
是否存在任何完全安全的方法(最好不使用文件)或加密首选项或数据库文件?
提前致谢
解决方案(来自Marcin Orlowski的想法)
一个相对安全的解决方案是散列密码和另一个字符串,只有我的应用程序知道(假设没有重新设计工程),在这种情况下,攻击无法用他自己的散列字符串替换我的散列字符串。
答案 0 :(得分:1)
不,没有防弹解决方案。可以通过或多或少的努力提取应用程序中的内容,或者您的应用程序可能被黑客攻击等。如果需要存储密码,请不要将plain存储为纯文本。首先对它进行sha1
或md5
哈希并存储哈希值,所以即使有人会在你的prefs / DB上找到它然后他仍然不知道密码(但他可以尝试强制它使用ie rainbow tables等)。根据您使用密码保护的数据的敏感度,使用哈希可能就足够了(如果您不对数据本身进行加密,那么更进一步是没有意义的)
答案 1 :(得分:0)
将密码哈希保存在私有ContentProvider中。 SharedPreferences XML和数据库文件只能在用户使用root电话时从DDMS获取。