这是一篇文章,列出了在配备Core 2
Duo处理器的Mac笔记本电脑上花费的时间。因此,是的,Bcrypt在移动设备上可能会非常慢。
另一个常见的问题是其初始化
SecureRandom可能非常缓慢,并且由于缺少足够的随机数据而可能会挂起。这在不同的机器和操作系统之间会有所不同。您可能会在其他地方找到很多讨论的地方,但是您可能想通过使用自己进行初始化
newSecureRandom()或通过
gensalt单独调用以隔离随机数据生成,然后仅对进行计时来测试它
hashpw。
另一个问题是为什么您实际上要在客户端上对其进行哈希处理?如果将其存储在客户端上并在本地登录,则可能有一定意义,但是,如果将其发送到服务器,并且正常登录涉及向服务器发送明文密码,那么您将一无所获。同样,一个常见的误解是在将密码发送到服务器之前(在登录时)对密码进行哈希处理可以提供某种保护,而实际上这等同于发送纯文本密码。攻击者仅获得哈希即可获得访问权限。
散列密码是一种防止攻击者在密码存储库本身受到破坏时获得访问(或至少降低其速度)的方法。
因此,如果密码存储在服务器上,则应以明文形式(通过安全通道)发送密码,并且服务器应决定如何对其进行哈希处理。



