Java AES加密性能与OpenSSL性能

时间:2018-11-28 16:47:56

标签: java encryption openssl

我一直在测量内置于AES-NI指令中的java 11的性能,并且通过以下方式打开NI JAVA_TOOL_OPTIONS -> -XX:+UnlockDiagnosticVMOptions -XX:+UseAES -XX:+UseAESIntrinsics 我通过开放的jdk本身运行基准测试 java -server -jar target/jmh-jdk-microbenchmarks-1.0-SNAPSHOT.jar org.openjdk.bench.javax.crypto.full.AESBench.encrypt -p algorithm=AES/ECB/NoPadding

当我比较结果并以GB / s为单位计算吞吐量时,对于16k编码块,与通过openssl性能测试进行的测试相比,我获得了大约20%的吞吐量 openssl speed -evp aes-128-ecb

我似乎找不到像样的比较/基准来描述预期使用jdk 11可获得的最大性能的百分比,但是20%似乎很低。是否有人知道比较(或者可能有一个想法,我哪里做错了,因为这些都是现成的性能工具,所以我认为在那儿可以调整的不多)。

作为参考,openssl测试报告以下内容:

The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128-ecb     825652.24k  3185957.03k  5251673.77k  5827996.33k  6027457.88k  6031906.13k

openjdk基准测试报告

Benchmark               (algorithm)  (dataSize)  (keyLength)  (provider)   Mode  Cnt      Score      Error  Units
AESBench.encrypt  AES/ECB/NoPadding       16384          128              thrpt   40  84543.829 ± 9034.592  ops/s

其中我得出的结论是,对于16k块,这里的性能为85000 * 16k或约1.4 GB / s,或约openssl数量的20%。

这是预期的还是我得出了错误的结论?

0 个答案:

没有答案