Android:加密密码

时间:2011-06-15 08:29:11

标签: android password-protection

  

可能重复:
  Storing a password

我使用共享首选项来存储密码。保存密码数据是否安全,或者我必须在保存之前对其进行加密。请帮我提供示例代码。

先谢谢,

3 个答案:

答案 0 :(得分:26)

简短回答:非常安全。

答案很长:首先,如果您要创建一个允许用户登录Web /远程服务的应用程序,您可能需要查看AccountManager。学习API并与之集成有点困难,但是你会得到一些好处:

  1. 简单的多帐户管理(所有帐户都存储在AccountManager)。
  2. 能够添加SyncAdapter s(并且编写它们会非常简化,因为AccountManager会使用正确的帐户调用您的适配器 - 您不必为每个帐户运行同步手动地)。
  3. 您的应用将显示在Settings > Accounts & sync
  4. 查看文档中的Sample Sync Adapter - 它会显示如何使用AccountManager(如果您不需要,可以忽略同步内容)。

    现在,关于存储密码的安全性(以下内容对于在SharedPreferencesAccountManager中存储密码都有效。只要运行应用程序的设备没有root用户,它就完全安全了。没有其他应用程序,但你的可以读取密码。如果使用USB电缆将手机连接到PC并使用adb pull尝试获取相应的文件,则甚至无法读取密码。

    但是,如果手机是root用户,任何获得超级用户访问权限的应用都可以读取密码。此外,adb pull有效,您可以在几秒钟内获得密码。

    因此,建议使用加密(特别是如果您的Web /云/远程服务包含敏感数据)。我在上一个项目中使用了SimpleCrypto(与AccountManager一起使用)并且效果很好。如果您想知道,我只使用常量作为“主密码”。为了增加安全性,我对最终版本(check out how)进行了模糊处理。

答案 1 :(得分:4)

从来没有保证以纯文本形式存储密码,还记得索尼最近发生的事情吗?

任何java encryption technique都会

答案 2 :(得分:0)

您不应该直接保存密码,而是保存密码的哈希值。