我用纯 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
最佳答案
没有错。 AES 更快,因为:
从计算的角度来看,RC2 相当复杂。
AES 已在软件中进行了大量优化,因为它的使用频率很高。
一些 CPU 具有 AES 硬件加速(例如 AES-NI 用于 x86)。
关于c - 从 Openssl 对 AES 和 RC2 进行基准测试——为什么 AES 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27281451/