2013-02-01 139 views
4

我想在ubuntu中用openssl測試RSA和AES的速度。AES比RSA加密更快?

我用下面的代碼來測試它。

echo -n "" > 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不應該更快?我做錯了什麼嗎?

謝謝。

+0

我不相信你的數字,但你可能會試着計算一下nop,看看你的定時循環有多少開銷。 –

回答

3

爲什麼重要的是哪一個更快。你真的不能用它們來做同樣的事情。 RSA只能加密一個very small amount of data

但是,一般情況下,如果您需要使用RSA對大量內容進行加密,則可以使用它對隨機AES密鑰進行加密,然後執行明文,但基於塊大小和解密速度而不是加密速度,這更多是出於安全原因。

5

除了jbtule關於RSA和AES加密的不同目的的正確觀點之外,在基準測試的設計中還存在一些根本性的缺陷。

你在這裏測量的不僅僅是一個RSA或AES加密程序,而是這些openssl命令的全部執行。

雖然在外部程序之外使用定時器來測量其中一個函數的執行情況是有意義的,但這麼做需要花費時間去做其他事情(比如解析命令行參數,找到正確的OpenSSL子模塊,打開文件,讀取文件)與執行定時功能所需的時間相比可以忽略不計。

在這裏,顯然不是這種情況,尤其是對於如此短的測試消息。