当前位置: 首页 > 面试题库 >

在Android App中使用jBCrypt对密码加盐会导致长时间挂起

蒋茂材
2023-03-14
问题内容

当用户使用我的应用程序注册时,我正在使用jBCrypt库对用户密码进行哈希处理。

我使用带有盐的基本哈希函数,如下所示:

String pass = BCrypt.hashpw(rawPass, BCrypt.gensalt());

注册时我发现 一两分钟 ,然后检查了调试器,确认BCrypt是负责任的。

给密码加盐是否真的需要 那么
多处理能力?如果是这样,一个很好的选择是将纯文本密码发送到服务器以对其进行哈希处理吗?我最初对此事的想法是在将其发送到任何地方之前对其进行哈希处理。有任何想法吗?


问题答案:

这是一篇文章,列出了在配备Core 2
Duo处理器的Mac笔记本电脑上花费的时间。因此,是的,Bcrypt在移动设备上可能会非常慢。

另一个常见的问题是其初始化SecureRandom可能非常缓慢,并且由于缺少足够的随机数据而可能会挂起。这在不同的机器和操作系统之间会有所不同。您可能会在其他地方找到很多讨论的地方,但是您可能想通过使用自己进行初始化new SecureRandom()或通过gensalt单独调用以隔离随机数据生成,然后仅对进行计时来测试它hashpw

另一个问题是为什么您实际上要在客户端上对其进行哈希处理?如果将其存储在客户端上并在本地登录,则可能有一定意义,但是,如果将其发送到服务器,并且正常登录涉及向服务器发送明文密码,那么您将一无所获。同样,一个常见的误解是在将密码发送到服务器之前(在登录时)对密码进行哈希处理可以提供某种保护,而实际上这等同于发送纯文本密码。攻击者仅获得哈希即可获得访问权限。

散列密码是一种防止攻击者在密码存储库本身受到破坏时获得访问(或至少降低其速度)的方法。

因此,如果密码存储在服务器上,则应以明文形式(通过安全通道)发送密码,并且服务器应决定如何对其进行哈希处理。



 类似资料:
  • 大家好! 我正试图找到一种方法,以盐和散列我的密码在Java为一个web应用程序,需要一个密码登录。 我试图使用Bouncy Castle bcrypt和scrypt类来获得salting、哈希和密码验证的方法,结果发现这两个类中都没有密码验证方法。如果我在这个评估中是不正确的,请让我知道密码验证的方法是什么或者如果我遗漏了什么。 作为另一种选择,我决定在分解并转到PDBKF2之前试用bcrypt

  • 我对密码学相当陌生,我正在使用加密密码并将其存储在数据库中。对于加密,我使用算法,并且我想对密码加盐,以防止它对字典攻击。 如有任何帮助,我们将不胜感激。

  • 问题内容: 我对 密码学还很陌生 ,我正在使用它来 加密 密码并将其存储在数据库中。对于 加密, 我正在使用算法,并且希望对密码加盐以防止再次发生字典攻击。 任何帮助,将不胜感激。 问题答案: 我建议为此使用基于密码的密钥派生函数,而不是基本的哈希函数。像这样:

  • 我正在使用Spring3,并从MySQL数据库中获取用户。 对我需要做什么有什么想法吗? 谢谢

  • 我有一个非常基本的问题,涉及到用户管理,尤其是存储散列密码。我读了几页(比如https://wiki.python.org/moin/Md5Passwords ). 我对哈希的理解是: 用户提供的密码是单向散列的(使用任何函数) 没有人(包括用户/管理员)能看到密码 当用户登录时,他提供的字符串将被散列,以查看它是否与存储的散列密码匹配 这一切都很清楚,但我不确定哈希中的“salt”是什么意思。我

  • 我想在C#中使用PBKDF2加胡椒和盐来散列密码。我对密码学有点陌生,所以如果我错了,请随时纠正我。 我之所以使用Rfc2898DeriveBytes类,是因为(根据其他Stackoverflow用户的说法)bcrypt和其他哈希算法在C#中不受本机支持和验证,因此可能会造成安全威胁。这篇文章的目的不是开始讨论哪种哈希算法是最好的。 我的目标是:每个密码都会得到一个随机的盐和胡椒,密码会经过一定数