从Openssl对AES和RC2进行基准测试 - 为什么AES更快?

时间:2014-12-03 20:55:42

标签: c encryption cryptography openssl

我在纯C中编写了一个简单的代码来对Openssl的AES-CBC-256和RC2-CBC-128进行基准测试。我的测试循环看起来像这样:

for(i=0; i<tests; i++)
    {
        timer_start();
        for(j=0; j<its; j++)
        {
            RC2_cbc_encrypt(input, enc_out, length, &key, iv_enc, RC2_ENCRYPT);
        }
        stop = timer_stop();
        printf("%f\n",(stop / its) * 1000);
    }

for(i=0; i<tests; i++)
    {
        timer_start();
        for(j=0; j<its; j++)
        {
            AES_cbc_encrypt(input, enc_out, length, &enc_key, iv_enc, AES_ENCRYPT);
        }
        stop = timer_stop();
        printf("%f\n",(stop / its) * 1000);
    }

但是发生了一些错误,在我测试代码的每台机器上我得到了奇怪的结果,也就是说,每次AES都比RC2快。可能是什么问题呢?我使用getrusage来衡量时间(在我的计时器中)。

AES:
0.010898
0.010471
0.010531

RC2:
0.023261
0.023392
0.023224

1 个答案:

答案 0 :(得分:3)

没有错。 AES更快,因为:

  • 从计算的角度来看,RC2相当复杂。

  • AES已在软件中大量优化,因为它经常被使用。

  • 某些CPU具有AES的硬件加速功能(例如x86为AES-NI)。