用多选项解释rsa的openssl速度输出

我正在评估CPU性能。 我有一个Intel(R)Xeon(R)CPU E5-1650 v2 @ 3.50GHz并运行以下命令: openssl speed rsa -multi 12 2>&1 |tee openssl-log.txt并得到以下输出:

  sign verify sign/s verify/s rsa 512 bits 0.000008s 0.000001s 118050.6 1200000.0 rsa 1024 bits 0.000038s 0.000002s 26098.7 451567.0 rsa 2048 bits 0.000239s 0.000007s 4183.6 135606.3 rsa 4096 bits 0.001713s 0.000028s 583.7 35778.4 

有人可以帮我理解输出吗? 列标记和validation是什么意思? 文档似乎没有解释太多: https : //www.openssl.org/docs/apps/speed.html

先谢谢你。

速度测试代码位于<openssl>/apps/speed.c

-multi是并行多个基准的开关,而不是乘法(消除所有的混淆)。 请参阅1145行附近的注释:

 #ifndef NO_FORK BIO_printf(bio_err,"-multi n run n benchmarks in parallel.\n"); #endif 

列标记和验证是什么意思?

签署并验证他们所说的话。 他们用不同的RSA模量进行签名操作和验证操作。

Sign / s和Verify / s是Sign和Verify的反转。 即,1 / 0.000008s => 125,000个符号每秒。

以下是打印您所看到的报告的代码。 它始于2450行:

 #ifndef OPENSSL_NO_RSA j=1; for (k=0; k<RSA_NUM; k++) { if (!rsa_doit[k]) continue; if (j && !mr) { printf("%18ssign verify sign/s verify/s\n"," "); j=0; } if(mr) fprintf(stdout,"+F2:%u:%u:%f:%f\n", k,rsa_bits[k],rsa_results[k][0], rsa_results[k][1]); else fprintf(stdout,"rsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n", rsa_bits[k],rsa_results[k][0],rsa_results[k][1], 1.0/rsa_results[k][0],1.0/rsa_results[k][1]); } #endif 

找到执行标志和验证的代码留给读者练习;)


具有Intel(R)Xeon(R)CPU E5-1650 v2 @ 3.50GHz

如果你正在使用现代GCC,那么请确保使用enable-ec_nistp_64_gcc_128进行config 。 使用ec_nistp_64_gcc_128会将一些操作(如DH操作)加快2倍或4倍。

你需要一个现代的GCC为__uint128_tConfigure无法确定编译器是否支持__uint128_t ,因此它将禁用ec_nistp_64_gcc_128