我试图用ubuntu中的openssl来测试RSA和AES的速度. 我使用以下代码来测试它. echo -n "0123456789012345" message.txtopenssl genrsa -out private.pem 1024openssl rsa -in private.pem -out public.pem -puboutfor i in {1..1000}do
我使用以下代码来测试它.
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不应该更快吗?我做错了吗?
谢谢.
除了@jbtule关于RSA和AES加密的不同目的的正确观点之外,基准设计中存在一些根本性的缺陷.您在这里测量的不仅仅是RSA或AES加密例程,而是整个执行这些openssl命令.
虽然在外部程序之外使用计时器来衡量其中一个函数的执行情况是有意义的,但这样做需要花费时间来做其他事情(比如解析命令行参数,找到正确的OpenSSL子模块,打开文件) ,读取文件)与执行定时功能所需的时间相比可以忽略不计.
在这里,情况显然不是这样,特别是在这么短的测试消息的情况下.