gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:53 25 4
gpt4 key购买 nike

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

我正在使用基本的散列函数,加盐,如下所示:

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

我在注册时注意到一到两分钟的挂起,并检查了调试器,确认是 BCrypt 造成的。

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

最佳答案

这里是 an article其中列出了在配备 Core 2 Duo 处理器的 Mac 笔记本电脑上花费的时间。所以,是的,Bcrypt 在移动设备上可能会非常慢。

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

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

哈希密码是一种防止攻击者获得访问权限(或至少减慢访问速度)的方法,如果密码存储本身受到威胁。

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

关于java - 在 Android App 中使用 jBCrypt 加盐密码会导致长时间挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7626914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com