5

我正在尝试在 ubuntu 中使用 openssl 测试 RSA 和 AES 的速度。

我用下面的代码来测试它。

echo -n "0123456789012345" > message.txt

openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -pubout


for i in {1..1000}
do
    openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out message_enc.txt
done

for i in {1..1000}
do
    openssl rsautl -decrypt -inkey private.pem -in message_enc.txt -out message_dec.txt
done

for i in {1..1000}
do
    openssl enc -e -aes-128-cbc -in message.txt -out aes.bin -K ddf -iv 345

done

结果:

$ time ./rsa_enc 
real    0m3.697s
user    0m1.308s
sys     0m0.680s

$ time ./rsa_dec
real    0m14.273s
user    0m3.172s
sys     0m0.696s

$ time ./aes

real    0m3.790s
user    0m1.408s
sys     0m0.500s

它表明 RSA 加密比 AES 加密更快。

AES不应该更快吗?我做错了什么吗?

谢谢。

4

2 回答 2

5

除了@jbtule 关于 RSA 和 AES 加密不同目的的正确观点之外,您的基准测试设计存在根本性缺陷。

您在这里测量的不仅仅是 RSA 或 AES 加密例程,而是这些openssl命令的整个执行。

虽然在外部程序之外使用计时器来测量其功能之一的执行情况是有意义的,但这样做需要花费时间做其他事情(如解析命令行参数、找到正确的 OpenSSL 子模块、打开文件,读取文件)与执行定时功能所需的时间相比可以忽略不计。

在这里,显然情况并非如此,尤其是对于如此简短的测试消息。

于 2013-02-01T13:58:32.513 回答
2

为什么无论如何哪个更快很重要。你真的不能用它们来做同样的事情。RSA 只能加密非常少量的数据

但通常,如果您需要使用 RSA 加密大型内容,您可以使用它加密随机 AES 密钥和 aes 来处理您的明文,但更多的是出于安全原因,基于块大小和解密速度而不是加密速度。

于 2013-02-01T13:46:56.703 回答