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

我想存储用于在安全场所开发的金融应用程序中签名的密码。经过一些网上冲浪后,我发现以下选择,但每个选择都有一定的缺点。


1)KeyChain。

仅在OS版本4中可用。


2)共享首选项。

即使我加密了数据,它也以纯文本形式存储数据,然后可以通过反编译应用程序代码来破坏加密密钥。


3)访问keystore守护程序并在其中存储凭据。

(http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html)需要另一个密码才能记住。


请建议我一种更好的方法来保护IPhone KeyChain等Android应用程序中的凭据信息。


喵喔喔
浏览 1160回答 3
3回答

心有法竹

目前尚不等同于Android中iPhone的KeyChain。如果要保密,请勿将其存储在设备上。或至少不要将加密的密钥/密码存储在设备上。就那么简单。另外:1)即使在ICS上,也不能直接使用KeyChain来存储应用程序密钥(请参阅3中的博客文章))2)这仅是针对植根电话或有人可以物理访问设备的问题。3)与记住多个密码相比,记住一个密码来保护您的所有凭据要好得多。此外,在ICS上,没有单独的密码,凭据存储受设备解锁密码保护。

明月笑刀无情

散列是解决方案,不要在共享首选项或任何介质中将凭据存储为纯文本格式。只需对密码进行加盐和哈希处理,然后就可以继续将其存储在sharedPreferences或某些嵌入式db中。下面是它的工作原理:线上成功登录后,将普通密码(未加密)发送到服务器进行身份验证和授权。盐可以生成并从服务器返回到客户端,也可以在客户端生成然后将其存储为salt并哈希密码并存储。离线我们将使用存储的盐对用户输入的密码进行哈希处理我们将与成功登录后存储的哈希值进行比较如果两者相等,那么我们将允许用户进入,否则我们将不允许用户进入。好处:因此,现在您不必担心版本兼容性。即使设备已扎根,也很难蛮力散列。即使有人反编译/破解应用程序,也很难进行反向工程

慕娘9325324

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