我正在學習測試,我仍然沒有得到它爲什麼公鑰算法比對稱算法慢。爲什麼公鑰算法很慢?
回答
Public-key cryptography是asymmetric cryptography的一種形式,其中區別在於使用了額外的密鑰。
Symmetric algorithms使用「共享祕密」,其中兩個系統各自使用單個加密密鑰來加密解密通信。
公鑰加密不使用單個共享密鑰,而是使用數學密鑰對:公鑰和私鑰。在這個系統中,通信是用公鑰加密的,並用私鑰解密。下面是來自維基百科的一個更好的解釋:
在 公共密鑰加密中使用的識別技術是利用 非對稱密鑰算法,其中使用的 密鑰加密的消息不 一樣使用的密鑰解密 吧。每個用戶都有一對 密鑰 - 公鑰加密密鑰和一個私鑰解密密鑰。 公開可用的加密密鑰是廣泛分佈的 ,而私人的 解密密鑰只有 收件人知道。消息使用收件人的公鑰加密 ,並且只能使用 對應的私鑰解密 。密鑰 在數學上是相關的,但私鑰不可行(即在 實際或計劃的練習中)是從公鑰導出的 。 算法的發現可能產生公鑰/私鑰對 革命化的做法 密碼學開始於20世紀70年代中期 。
的計算開銷則相當明顯:公鑰是提供給它暴露於任何系統(公共密鑰系統在互聯網上,例如暴露公鑰到整個互聯網)。爲了彌補,公鑰和私鑰都必須相當大才能確保更高級別的加密。但是,結果是一個更加強大的加密級別,因爲私有解密密鑰(迄今爲止)不能從公用加密密鑰進行反向設計。
還有更多可能影響public-key infrastructure(PKI)的「速度」。由於這個系統的一個問題是信任,所以大多數實現涉及certificate authority(CA),它們是可信的委託密鑰對並驗證密鑰的「身份」的實體。所以總結一下:更大的加密密鑰大小,兩個加密密鑰而不是一個密鑰,以及引入證書頒發機構:額外的DNS查詢和服務器響應時間。
這是因爲這種額外開銷,大多數實現受益於hybrid algorithm,其中公鑰和私鑰用於生成會話密鑰(很像對稱算法中的共享密鑰)以獲得兩全其美。
加密和鍵控方法是一個非常深刻和複雜的話題,只有世界上最聰明的數學思想才能完全理解,但是大多數人都可以理解的頂級視圖。
主要區別在於對稱算法比非對稱(PKI)方法需要更多,更小的密鑰。因爲對稱算法是在一個以可信通信方式傳輸的「共享密鑰」(例如abcd1234
)上工作的(例如,我打電話給你打電話詢問共享密鑰),那麼它們不會只要他們依賴於其他安全方法(即我相信你不要告訴任何人),就需要這樣做。 PK基礎設施涉及通過互聯網,不可信空間發送該「密鑰」,並涉及使用巨大的素數和大量密鑰(例如1024位或2048位而不是128位或256位)。
一般的經驗法則是PKI方法大約比對稱密鑰慢1000倍。
=)ah keyize是其中一個問題:) – 2010-11-28 22:38:54
公鑰算法依賴於「陷門」計算,這些算法在計算上花費昂貴的加密和計算上難以用祕密密鑰解密。如果第一步太容易了(與速度相關),第二步變得更難(更易破碎)。因此,公鑰算法往往是資源密集型的。
私鑰算法在加密階段已經有了祕密,所以他們不必像做公開祕密的算法那樣做很多工作。
以上是一個過度概括,但應該讓你感覺到相對速度差異背後的原因。話雖如此,私鑰算法可能會很慢,公鑰算法可能會有一個有效的實現。魔鬼是在細節:-)
- 1. 爲什麼這個算法很慢?
- 2. 爲什麼方法很慢?
- 3. 爲什麼Crystal Reports PrintToPrinter方法很慢
- 4. 爲什麼sql.rows Groovy方法很慢
- 5. 爲什麼這種方法很慢?
- 6. 爲什麼MinGW很慢?
- 7. 爲什麼babel transpilation很慢?
- 8. 爲什麼ODBC很慢?
- 9. 爲什麼lockCanvas()很慢?
- 10. 爲什麼boost :: function很慢?
- 11. 爲什麼C#Parallel.Invoke很慢?
- 12. 爲什麼dataframe.values很慢
- 13. 爲什麼我的複製和轉換「算法」很慢?
- 14. 算法爲什麼這麼慢?
- 15. 爲什麼這個遞歸很慢?
- 16. JavaScript爲什麼操縱__proto__很慢?
- 17. 爲什麼我的requestAnimFrame仍然很慢?
- 18. 爲什麼上下文切換很慢?
- 19. 爲什麼搜索多張表很慢?
- 20. 爲什麼刷新html頁面很慢
- 21. OpenGL GLUT窗口很慢,爲什麼?
- 22. 爲什麼textchangelistener速度很慢?
- 23. 爲什麼釋放速度很慢?
- 24. 爲什麼這個SQL查詢很慢?
- 25. 爲什麼我的Shell排序很慢?
- 26. R diff函數爲什麼很慢?
- 27. 爲什麼我的角柵很慢?
- 28. 爲什麼Gallery很慢/訪問GoogleLoginService?
- 29. 爲什麼StringTemplate可能會很慢?
- 30. 爲什麼這個Haskell函數很慢?
在stackoverflow.com或programmers.stackexchange.com的傢伙將能夠更好地回答這個問題。 – Iain 2010-11-28 22:33:45
或者可能是這樣的:http://security.stackexchange.com/ – DanFromGermany 2015-06-24 10:19:22