在Android应用程序中散列密码有哪些好方法?

时间:2011-10-03 01:08:10

标签: android passwords

我正在创建一个需要用户注册远程服务器的应用程序,但我希望在发送密码之前对其密码进行哈希处理以存储在我的数据库中。

我尝试使用jBCrypt库,但它在散列时创建了很长的挂起时间。还有其他选择吗?在不创建明显挂起的情况下散列密码的最佳(也是最安全)方法是什么?

2 个答案:

答案 0 :(得分:4)

你的做法似乎是错误的。除非您有一些特殊要求,否则通常的方法如下(对于任何Web应用程序,不是特定于Android的):

  1. 当用户注册时,取出他们的密码,哈希(使用随机盐也是推荐),并将其保存在数据库中。这样做是为了不在数据库中保存实际密码。
  2. 当用户需要登录时,您将实际密码发送到您的webapp(使用SSL以避免以明文形式发送),哈希。 在服务器上,应用与步骤1中相同的散列算法,并将结果与​​数据库中的结果进行比较。如果它们相同,则用户提供了正确的密码。
  3. 简而言之,您应该在服务器上进行哈希处理,而不是在Android设备上进行哈希处理。

答案 1 :(得分:0)

避免不惜一切代价保存第三方密码。保存它们被视为一种网络钓鱼形式。尝试保存身份验证令牌,而不是使用OAuth等方法获取的原始密码。

如果确实需要将密码发送到网络服务器上的数据库,只需使用HTTPS即可。这将确保通过电线进行安全加密。然后,您可以根据需要在数据库中加密密码。此方法还可确保您的加密机制不在设备本身上,这可能更容易受到损害。