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

use*_*227 5 linux performance openssl rsa

我正在尝试评估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
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解输出吗?列标记和验证意味着什么?这些文档似乎没有解释得太多:https: //www.openssl.org/docs/apps/speed.html

先感谢您.

jww*_*jww 5

速度测试的代码是<openssl>/apps/speed.c.

-multi是一个并行的多个基准测试的开关,而不是乘法(以消除所有混淆).查看1145行附近的评论:

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

列标记和验证意味着什么?

签署并验证他们所说的话.他们使用不同的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
Run Code Online (Sandbox Code Playgroud)

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


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

就在自行车脱落,但一定要configenable-ec_nistp_64_gcc_128你使用的是现代的GCC.使用ec_nistp_64_gcc_128会将某些操作(如DH操作)加速2倍或4倍.

你需要一个现代化的GCC __uint128_t.Configure无法确定编译器是否支持__uint128_t,因此它将保持ec_nistp_64_gcc_128禁用状态.