我在运行OSX 10.9.4,1.7GHz i7,8GB内存的Macbook Air上运行以下Java程序.我安装了Java Cryptography Extension(JCE).
import javax.crypto.Mac;
public class Main {
public static void main(String[] args) throws Exception {
Mac.getInstance("HmacSHA1");
}
}
Run Code Online (Sandbox Code Playgroud)
运行这个简单的程序会导致运行时间超过5秒!
$ javac -version
javac 1.7.0_45
$ javac Main.java
$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
$ time java Main
real 0m5.326s
user 0m0.390s
sys 0m0.033s
Run Code Online (Sandbox Code Playgroud)
我做了很多搜索,但没有找到解决方法或解释的方法.
HmacSHA1的Mac.getInstance()需要很长时间才能执行
这听起来类似我的问题,但我读过的所有消息来源指出,/dev/random与/dev/urandom上OSX相同.
再次讨论SecureRandom的随机性来源,但似乎并不适用于OSX.
以前有人听说过这个问题吗?或者知道一种方法让我调试正在发生的事情?当你的单位测试一直持续到目前为止,对你的单位测试给予5秒的惩罚是非常令人沮丧的.
编辑: 这是程序内部的时间安排和安全提供程序列表:
import java.security.Provider;
import java.security.Security; …Run Code Online (Sandbox Code Playgroud)