我想存储用于签署我在安全的地方开发的财务应用程序的密码.在做了一些网上冲浪后,我发现了以下选项,但每个选项都有一定的缺点.
1)KeyChain.
仅适用于OS版本4.
2)共享偏好.
它以纯文本形式存储数据,即使我加密数据,也可以通过反编译应用程序代码来破坏加密密钥.
3)访问密钥库守护程序并在其中存储凭据.
(http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html)需要记住另一个密码.
请建议我更好的方法来保护Android应用程序中的凭证信息,如IPhone KeyChain.
Nik*_*kov 17
这与Android目前的iPhone KeyChain并不相同.如果您想保密,请不要将其存储在设备上.或者至少,不要将其加密的密钥/密码存储在设备上.就那么简单.
另外:
1)即使在ICS上,也不能直接使用KeyChain存储应用程序机密(参见3中的博客文章))
2)这对于有根电话只是一个问题,或者如果某人有物理访问设备的话.
3)记住单个密码,保护所有凭据,比试图记住多个密码要好得多.此外,在ICS上,没有单独的密码,凭证存储受设备解锁密码保护.
散列是解决方案,不会将凭据作为纯文本存储在共享首选项或任何媒体中.
只需加密和哈希密码,然后您可以继续将其存储在sharedPreferences或某些嵌入式数据库中.
线上
成功登录后,将普通(未散列)密码发送到服务器进行身份验证和授权.
盐可以生成并从服务器返回到客户端,也可以在客户端生成
然后将其存储为salt并散列密码并存储它.
离线
我们将使用我们存储的盐来哈希用户输入的密码
我们将与成功登录时存储的哈希值进行比较
如果两者相等,那么我们将让用户在其他地方,我们不会让用户进入.
所以现在您不必担心版本兼容性.
即使设备已植根,也很难强制哈希.
即使有人反编译/破解应用程序,也很难进行逆向工程
| 归档时间: |
|
| 查看次数: |
35214 次 |
| 最近记录: |