2011-06-25 97 views
0

我正在开发一个android应用程序,需要存储多个默认密码。在android中存储不同的密码

根据输入的密码,用户将显示不同的表格进行填充。

如果默认密码的数量多于10到20,那么存储默认密码的最佳解决方案是什么?

+0

你是什么意思的“最好”? – Mat

+0

你想知道使用什么样的加密? –

回答

2

我看到两种可能性:

  • 哈希所有密码(!与盐一起)和散列存储在正常SQLite数据库。每次用户输入密码时,您都会生成散列(使用salt)并查看数据库中是否有密码哈希。如果否,没有密码是正确的。如果是,您可以查看哪些密码匹配,并转发到正确的表单活动。请注意,用户输入密码时只需执行一次散列,因此您可以使用慢散列算法。
  • 将密码存储在(AES-)加密数据库中,或以正常未加密数据库中的加密形式存储密码。然后,您可以始终计算存储的密码的纯文本格式,以便于比较。这种方法的缺点是您必须在您的应用程序中存储密钥(密钥或密码)(或每次从服务器获取密码),这很容易通过反编译检索 - 如果这些是敏感密码或您保护敏感数据,这将是一个不行。

我宁愿第一种可能性。此外,我不会使用常见的MD5作为散列算法,但至少使用SHA-512或更好的bcrypt。这是一个很好的线索,解释了为什么以及如何在Android上做到这一点:Stackoverflow-Thread。基本上,你必须认为有人会检索sqlite数据库,如果使用了快速哈希算法(例如MD5),那么很容易找到弱密码(在彩虹表的帮助下)。密码盐有帮助,但仅针对google attacks。 Bcrypt哈希(+ salt!)生成速度较慢(这很好),甚至使得弱密码难以破解。

0

在android中有很多可用的存储选项。请参阅this

如果数据有限,则可以选择偏好设置。