Encryption

我們如何比較兩種加密算法的性能?

  • September 25, 2016

假設我想比較 RSA 和 Paillier 加密算法。我用同一種程式語言編寫了兩個不同的程序。現在如何在這兩者之間進行比較,它們可以在哪些方面進行比較?

有相同的工具嗎?

我將收集評論並從中建立答案。

第一的,

$$ .. $$您只需對具有相似安全屬性的密鑰執行操作一千次,並記錄每次操作的時間。請注意,速度相當依賴於實現,因此您正在測量算法的實現,而不僅僅是算法。

當然,生活和程式碼開發太簡單了,所以

$$ Y $$你還需要考慮$$ .. $$實施的質量。如果您自己編寫程式碼,您是否知道質量實現將使用的兩種算法的實現技巧?比較幼稚的實現可能不會告訴你太多。

當然,安全開發也有其自身的特殊問題,在比較速度之前需要考慮這些問題:

除了上述之外,重要的不僅是實現的優化級別,還包括對側通道攻擊的抵抗力,因此在某些情況下,一個實現甚至可能比一個好的實現更快。

所以合乎邏輯的結論是……

如果你想比較 RSA 和 Paillier 加密算法,那麼你不應該比較這些算法的兩種實現,你應該比較算法的計算複雜度。

關於如何做到這一點的有用評論:

在這種情況下,要考慮的一件事是所涉及的模數和數字的不同長度(在 Paillier 中,計算是用兩倍長的數字完成的,如果相同 $ n $ 被使用,由於 $ \bmod n^2 $ ).

感謝Maartenponchootususer2768tylo共同做出的回答。

如果是我,我會在python中使用time.time(),比較開始和結束的結果,然後是結束時間和開始時間的差。這是一個使用 md5 的範例:

root@kali:~/projects/crypto# cat hashtest.py 
import time, hashlib

#Tests MD5 hash algorithm 'iterations' times.
def testHashes(iterations):
   for i in range(iterations):
       x = hashlib.md5("The quick brown fox jumps over the lazy dog")

if __name__ == '__main__':
   begTime = time.time()
   testHashes(1000)
   endTime = time.time()
   print "1000 iterations of MD5 computed in %s seconds" % (endTime - begTime)

root@kali:~/projects/crypto# python hashtest.py 
1000 iterations of MD5 computed in 0.000519037246704 seconds

非常簡單的範例,但該概念可以應用於您建議的兩種算法。但是,如果您要使用類似 OpenSSL 的實現並在 C 中使用相同的方法,它將更準確地表示算法的實際速度。因為 python 的大量類型/解釋/一切都是對象實現,它將比 C 等較低級別的語言慢得多,並且可能同樣容易實現。

引用自:https://crypto.stackexchange.com/questions/39583