2014-12-03 30 views
0

我在純C到基準AES-CBC-256和從Openssl的RC2-CBC-128寫了一個簡單的代碼。我的測試循環是這樣的:每一個機器測試我的代碼,我得到了奇怪的結果,也就是說,每一個AES比RC2更快的時間對Openssl的AES和RC2進行基準測試 - 爲什麼AES更快?

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

但蹊蹺的是發生,。可能是什麼問題呢?我使用getrusage來衡量時間(在我的計時器中)。

AES: 
0.010898 
0.010471 
0.010531 

RC2: 
0.023261 
0.023392 
0.023224 
+0

此外,檢查[這個答案](http://stackoverflow.com/a/3670607/589259),就在最後一段之前的段落。 – 2014-12-03 21:05:21

回答

3

沒有錯。 AES更快,因爲:

  • 從計算的角度來看,RC2相當複雜。

  • AES已經在軟件高度優化的,因爲它是如此頻繁使用。

  • 某些CPU具有用於AES硬件加速(例如AES-NI用於x86)。

+0

嗯,3DES怎麼樣?它應該比RC2快,但比AES慢?這似乎很奇怪我,因爲當我與OpenSSL的測試後,我得到了'283758'的AES和'205444'爲RC2和肯定,這是我誰在我的代碼,而不是Openssl的程序員做了錯誤。你可以如此善良,回答關於3DES和其他2個人的問題嗎?謝謝:) – yak 2014-12-03 21:11:46

+1

DES也是相當複雜的,很難在軟件來實現,而不是硬件加速在大多數系統。這個結果對我來說很合理。 – duskwuff 2014-12-03 21:18:22

+0

那麼爲什麼Openssl AES比RC2慢,在我的代碼中比RC2快?我在同一臺機器上用'openssl speed'測試了它,我測試了我的代碼 – yak 2014-12-03 21:38:00