在Android上存储密钥
问题描述:
我的Android应用程序使用密钥来生成用于验证目的的令牌。有没有比将数据存储在数据存储中更安全的方法来存储?我认为对于iPhone而言,我们将它存储在钥匙串中。我知道android.accounts.AccountManager,但这似乎给其他应用程序潜在的访问密码的能力(如果用户选择错误的选项),所以似乎不太安全。在Android上存储密钥
答
Android(不幸)不提供这样做的方法。我之前使用的方法是使用应用程序中生成的另一个密钥对此令牌进行加密。
您的应用程序密钥可以通过算法生成。但是,这与您的算法一样安全。一旦知道这就相当于以纯文本存储标记。
答
您可以将密钥存储在您的应用程序的首选项中。由于Android系统的基础文件系统限制,这将保护密钥不被其他应用程序读取。
但是,这不会保护密钥不被用户自己读取。
+7
是的,但是如果你这样做,我可以在一分钟内得到你的钥匙!尝试apktool,你可以得到整个strings.xml。只是做了一个着名的Android社交应用程序,并得到了他们的oauth消费者密钥和秘密,Facebook的秘密,谷歌分析身份证,....给了我2分钟。 – 2011-03-09 00:12:46
我不认为任何人会发现如果他们真的想要找到这个功能太难了。不过,我认为这比读纯文本密钥 – Casebash 2010-04-20 03:52:41
的确是一个很大的努力。它比其他任何东西都更隐蔽。另一种方法是存储使用某个用户指定的密码加密的令牌。这是最安全的,但是,每次启动应用程序时,用户都必须使用应用程序进行身份验证。 – Prashast 2010-04-21 00:35:39
它根本不安全。这相当于混淆。它可以保护您免受随意浏览器和脚本小孩的侵害,但不会因为想知道答案的真实性。但如果你只是担心脚本小子,那么这是一个好的解决方案。 – 2010-12-08 22:43:17