各種加解密算法分類及其各自的安全性能對比

常用的加解密算法分三大類:非對稱密鑰加密算法、對稱密鑰加密算法、Hash加密算法

一、非對稱密鑰加密算法(RSA、DSA、ECC、DH等):

非對稱加密又叫公開密鑰算法(public key algorithm)。這種加密算法是這樣設計的:用作加密的密鑰不同於用作解密的密鑰,而且解密密鑰不能根據加密密鑰計算出來(至少在合理假定的長時間內)。之所以又叫做公開密鑰算法是由於加密密鑰可以公開,即陌生人可以得到它並用來加密信息,但只有用相應的解密密鑰才能解密信息。在這種加密算法中,加密密鑰被叫做公開密鑰,而解密密鑰被叫做私有密鑰。非對稱加密算法的加密、解密的效率比較低。在算法設計上,非對稱加密算法對待加密的數據長度有着苛刻的要求。例如RSA算法要求待加密的數據不得大於53個字節。

   表1 非對稱密鑰加密算法安全性對比:

攻破時間

(MIPS年)

RSA/DSA

(密鑰長度)

ECC

密鑰長度

RSA/ECC

密鑰長度比

104

512

106

5:1

108

768

132

6:1

1011

1024

160

7:1

1020

2048

210

10:1

1078

21000

600

35:1


注:1MIPS年是1MIPS的機器一年所能處理的數據量,如上表中的10000MIPS年,即表示處理速度爲10000MIPS的CPU需要1年才能攻破。

表中紅色表示不安全、黃色表示中等安全、綠色表示安全級別較高。

由上表可知,ECC算法抗攻擊能力強、計算量小、處理速度快、存儲空間小、帶寬要求低。使得ECC在無線通信安全、IC卡數據加密等領域廣泛應用。這些特點必將使其替換RSA等算法,而成爲通用的公鑰加密算法。然而由於非對稱算法本身的複雜性,使得其對大數據加解密的適用性不強,所以非對稱算法常與對稱加密算法結合使用,即利用非對稱算法對對稱算法的密鑰進行加密傳輸。

Java代碼的DH算法,參考:http://blog.csdn.net/kongqz/article/details/6302913


二、對稱密鑰加密算法(DES、3DES、AES等)

對稱鑰匙加密系統是加密和解密均採用同一把祕密鑰匙,而且通信雙方都必須獲得這把鑰匙,並保持鑰匙的祕密。

表2 AES與3DES的比較

算法名稱

算法類型

密鑰長度

速度

解密時間(建設機器每秒嘗試255個密鑰)

資源消耗

AES

對稱block密碼

128、192、256位

1490000億年

3DES

對稱feistel密碼

112位或168位

46億年


三、Hash加密算法(MD5、SHA等):

散列是信息的提煉,通常其長度要比信息小得多,且爲一個固定長度。加密性強的散列一定是不可逆的,這就意味着通過散列結果,無法推出任何部分的原始信息。任何輸入信息的變化,哪怕僅一位,都將導致散列結果的明顯變化,這稱之爲雪崩效應。散列還應該是防衝突的,即找不出具有相同散列結果的兩條信息。具有這些特性的散列結果就可以用於驗證信息是否被修改。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章