如果你想在Java中使用加密强大的随机数,你可以使用SecureRandom.不幸的是,SecureRandom可能会很慢.如果它/dev/random在Linux上使用,它可以阻止等待足够的熵建立.你如何避免性能损失?
有没有人使用Uncommon Maths作为解决这个问题的方法?
任何人都可以确认JDK 6中已经解决了这个性能问题吗?
升级到macOS Sierra后,我似乎遇到了"sbt test"性能问题.在以前版本的OS X上花了大约40-50秒才完成.macOS Sierra时代要高得多.我上次跑的时间大约是15分钟.编译时间与'El Capitan'大致相同.
我是团队中唯一一个尝试这个新macOS的人,所以我不知道它是否只发生在我的Mac上,还是一个普遍的问题.
我的同事在Ubuntu上有类似的问题,它与随机数生成有关,减慢了测试速度 - 服务响应速度慢时间:Java SecureRandom&/ dev/random
不幸的是,这对我不起作用.最初我在JDK 8u54上试过,然后尝试更新到JDK 8u102,这也没有帮助.
PS我正在运行Macbook Pro Mid-2015 2.8GHz i7,16GB RAM,1TB SSD.
我们在Jboss服务器6.1中运行了三个Web应用程序(标准的Spring MVC-Hibernate).所有这三个应用程序共享一个通用的身份验证方法,该方法被编译为JAR并包含在每个WAR文件中.我们的身份验证方法使用org.springframework.security.crypto.bcrypt.BCrypt来哈希用户密码,请参阅以下内容:
hashedPassword.equals(BCrypt.hashpw(plainTextPassword, salt));
Run Code Online (Sandbox Code Playgroud)
JBOSS启动选项
set "JAVA_OPTS=-Xms2048m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -verbosegc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:gc.txt -XX:+UseParallelOldGC
问题: 当服务器重新启动时,Bcrypt.hashpw需要100ms来解密密码.然而,经过一段时间(没有模式),Bcrypt.hashpw性能突然从100毫秒上升到10秒.这没有明显的原因.
更多信息:
有没有其他人见过这个问题?
java ×3
performance ×2
bcrypt ×1
entropy ×1
macos-sierra ×1
random ×1
sbt ×1
scala ×1
scalatest ×1
security ×1
spring-mvc ×1