使用jbcrypt时性能可变且性能下降

时间:2014-02-05 16:51:46

标签: java performance security bcrypt jbcrypt

我正在使用jbcrypt来哈希项目中的密码。验证我正在使用的硬件上的密码时性能大约为500毫秒(log_rounds设置为12)。 然而,经过一段时间的常规使用后,表演时间突然下降到惊人的15秒。下降非常突然,没有累积,并且在重新启动过程之前保持不变。

分析显示在密钥(..)方法中使用了额外的时间。

来源:http://jbcrypt.googlecode.com/svn/tags/jbcrypt-0.3m/src/main/java/org/mindrot/jbcrypt/BCrypt.java

此方法仅使用xor,and,shift等基本函数计算哈希值。没有对象分配,外部资源的使用,随机数生成等。

同一进程中的其他功能的性能不会下降。内存分配稳定且低。不涉及完整的GC。

有没有人见过这个或为什么会发生这种情况的任何线索?我可以理解一种可变性能在某种程度上取决于其他情况,但这是一个非常突然和稳定的下降,从大约500ms。大约15000毫秒。

2 个答案:

答案 0 :(得分:4)

SecureRandom 可能会耗尽熵并导致此问题。

请参阅How to solve performance problem with Java SecureRandom?

答案 1 :(得分:3)

事实证明这与类加载有关。该库加载了许多不同的类加载器。当我们在系统类加载器中加载库时,问题就消失了。