为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android应用程序中安全存储凭据(密码)?

如何在Android应用程序中安全存储凭据(密码)?

喵喔喔 2019-11-29 14:22:24
我想存储用于在安全场所开发的金融应用程序中签名的密码。经过一些网上冲浪后,我发现以下选择,但每个选择都有一定的缺点。1)KeyChain。仅在OS版本4中可用。2)共享首选项。即使我加密了数据,它也以纯文本形式存储数据,然后可以通过反编译应用程序代码来破坏加密密钥。3)访问keystore守护程序并在其中存储凭据。(http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html)需要另一个密码才能记住。请建议我一种更好的方法来保护IPhone KeyChain等Android应用程序中的凭据信息。
查看完整描述

3 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

目前尚不等同于Android中iPhone的KeyChain。如果要保密,请勿将其存储在设备上。或至少不要将加密的密钥/密码存储在设备上。就那么简单。

另外:

1)即使在ICS上,也不能直接使用KeyChain来存储应用程序密钥(请参阅3中的博客文章))

2)这仅是针对植根电话或有人可以物理访问设备的问题。

3)与记住多个密码相比,记住一个密码来保护您的所有凭据要好得多。此外,在ICS上,没有单独的密码,凭据存储受设备解锁密码保护。


查看完整回答
反对 回复 2019-11-29
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

散列是解决方案,不要在共享首选项或任何介质中将凭据存储为纯文本格式。

只需对密码进行加盐和哈希处理,然后就可以继续将其存储在sharedPreferences或某些嵌入式db中。

下面是它的工作原理:

线上

  1. 成功登录后,将普通密码(未加密)发送到服务器进行身份验证和授权。

  2. 盐可以生成并从服务器返回到客户端,也可以在客户端生成

  3. 然后将其存储为salt并哈希密码并存储。

离线

  1. 我们将使用存储的盐对用户输入的密码进行哈希处理

  2. 我们将与成功登录后存储的哈希值进行比较

  3. 如果两者相等,那么我们将允许用户进入,否则我们将不允许用户进入。

好处:

  1. 因此,现在您不必担心版本兼容性。

  2. 即使设备已扎根,也很难蛮力散列。

  3. 即使有人反编译/破解应用程序,也很难进行反向工程


查看完整回答
反对 回复 2019-11-29
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

我不明白这样做的好处。如果服务器从期望的密码(然后哈希)更改为期望的预哈希密码,则如果散列密码受到破坏,则黑客可以使用该密码登录服务器。他们永远不必担心真正的密码是什么,而他们却拥有服务器认为“密码”是什么的信息

查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 1156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信