yak
yak

Reputation: 3930

Benchmarking AES and RC2 from Openssl - why AES is faster?

I wrote a simple code in pure C to benchmark AES-CBC-256 and RC2-CBC-128 from Openssl. My testing loops look like this:

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);
    }

But something wrong is happening, on every machine I test my code I get strange results, that is, every time AES is faster than RC2. What could be the problem? I use getrusage to measure time (in my timers).

AES:
0.010898
0.010471
0.010531

RC2:
0.023261
0.023392
0.023224

Upvotes: 0

Views: 448

Answers (1)

user149341
user149341

Reputation:

Nothing is wrong. AES is faster because:

  • RC2 is rather complex, from a computational perspective.

  • AES has been optimized heavily in software, because it is so frequently used.

  • Some CPUs have hardware acceleration for AES (e.g. AES-NI for x86).

Upvotes: 3

Related Questions