我想存储用于在,我在一个安全的地方开发金融应用程序签名的密码。 做一些网上冲浪后,我发现下面的选项,但他们每个人都有一定的缺陷。
1)钥匙串。
只有在OS 4版本可用。
2)共享偏好。
它存储在即使如果我对数据进行加密,然后加密密钥可以通过反编译的应用程序代码被泄露纯文本数据。
3)访问密钥库守护进程,并在其中存储凭证。
( http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html )需要一个新的密码要记住。
请建议我一个更好的办法,以确保像IPhone钥匙链的Android应用程序凭据信息。
在没有iPhone在Android系统目前钥匙扣等同。 如果你想保留一些秘密,不将其存储在设备上。 或者至少,不存储密钥/密码,它与设备上的加密。 就那么简单。
另外:
1)即使在ICS,你不能直接使用Keychain存储应用程序机密(见3的博客文章))
2)这仅仅是植根手机出了问题,或者如果有人有对设备的物理访问。
3)这是一个很大更好地记住一个密码,保护你们所有的凭证,不是试图记住多个密码。 此外,在ICS,没有单独的密码,所述凭证存储由设备解锁密码保护。
散列是溶液不存储凭证如在共享的偏好或任何介质纯文本。
只是盐和哈希密码,然后就可以继续将其存储在任何sharedPreferences或一些嵌入式数据库。
下面是它的工作原理:
线上
普通(非散列)密码被发送到服务器,在成功登录身份验证和授权。
所述盐既可以生成并从服务器返回给客户端,或者可以在客户机中产生
然后将其存储盐和散列密码并储存起来。
离线
我们将使用我们存储的盐散列用户输入的密码
我们将与我们保存成功登录后哈希比较
如果两者相等的,那么我们将让否则我们不会让用户的用户。
好处:
所以,现在你不用担心版本的兼容性。
即使设备是植根它是如此难以暴力破解哈希值。
即使有人反编译/破解应用程序它是如此难以逆转工程师