1. 程式人生 > >幾種常見加密演算法的比較

幾種常見加密演算法的比較

1.DES加密演算法


DES加密演算法是一種分組密碼,以64位為分組對資料加密,它的金鑰長度是56位,加密解密用同一演算法。DES加密演算法是對金鑰進行保密,而公開演算法,包括加密和解密演算法。這樣,只有掌握了和傳送方相同金鑰的人才能解讀由DES加密演算法加密的密文資料。因此,破譯DES加密演算法實際上就是搜尋金鑰的編碼。對於56位長度的金鑰來說,如果用窮舉法來進行搜尋的話,其運算次數為256。


隨著計算機系統能力的不斷髮展,DES的安全性比它剛出現時會弱得多,然而從非關鍵性質的實際出發,仍可以認為它是足夠的。不過,DES現在僅用於舊系統的鑑定,而更多地選擇新的加密標準。


2.AES加密演算法


AES加密演算法是密碼學中的高階加密標準,該加密演算法採用對稱分組密碼體制,金鑰長度的最少支援為128、192、256,分組長度128位,演算法應易於 各種硬體和軟體實現。這種加密演算法是美國聯邦政府採用的區塊加密標準,這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。


AES加密演算法被設計為支援128/192/256位(/32=nb)資料塊大小(即分組長度);支援128/192/256位(/32=nk)密碼長度,,在10進位制裡,對應34×1038、62×1057、1.1×1077個金鑰。


3.RSA加密演算法



RSA加密演算法是目前最有影響力的公鑰加密算 法,並且被普遍認為是目前最優秀的公鑰方案之一。RSA是第一個能同時用於加密和數宇簽名的演算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推 薦為公鑰資料加密標準。RSA加密演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難, 因此可以將乘積公開作為加密金鑰。


4.Base64加密演算法


Base64加密演算法是網路上最常見的用於傳輸8bit位元組程式碼的編碼方式之一,Base64編碼可用於在HTTP環境下傳遞較長的標識資訊。例如,在 JAVAPERSISTENCE系統HIBEMATE中,採用了Base64來將一個較長的唯一識別符號編碼為一個字串,用作HTTP表單和 HTTPGETURL中的引數。在其他應用程式中,也常常需要把二進位制資料編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base64編碼 不僅比較簡短,同時也具有不可讀性,即所編碼的資料不會被人用肉眼所直接看到。


5.MD5加密演算法



MD5為電腦保安領域廣泛使用的一種雜湊函式,用以提供訊息的完整性保護。對MD5加密演算法簡要的敘述可以為:MD5以512位分組來處理輸入的資訊,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成—個128位雜湊值。


MD5被廣泛用於各種軟體的密碼認證和鑰匙識別上。MD5用的是雜湊函式,它的典型應用是對一段資訊產生資訊摘要,以防止被篡改。MD5的典型應用是對一 段Message產生fingerprin指紋,以防止被“篡改”。如果再有—個第三方的認證機構,用MD5還可以防止檔案作者的“抵賴”,這就是所謂的數字簽名應用。MD5還廣泛用於作業系統的登陸認證上,如UNIX、各類BSD系統登入密碼、數字簽名等諸多方。


6.SHA1加密演算法



SHA1是和MD5一樣流行的訊息摘要演算法。SHA加密演算法模仿MD4加密演算法。SHA1設計為和數字簽名演算法(DSA)一起使用。


SHA1主要適用於數字簽名標準裡面定義的數字簽名演算法。對於長度小於2“64位的訊息,SHA1會產生一個160位的訊息摘要。當接收到訊息的時候,這 個訊息摘要可以用來驗證資料的完整性。在傳輸的過程中,資料很可能會發生變化,那麼這時候就會產生不同的訊息摘要。SHA1不可以從訊息摘要中復原資訊, 而兩個不同的訊息不會產生同樣的訊息摘要。這樣,SHA1就可以驗證資料的完整性,所以說SHA1是為了保證檔案完整性的技術。


SHA1加密演算法可以採用不超過264位的資料輸入,併產生一個160位的摘要。輸入被劃分為512位的塊,並單獨處理。160位緩衝器用來儲存雜湊函式 的中間和最後結果。緩衝器可以由5個32位暫存器(A、B、C、D和E)來表示。SHA1是一種比MD5的安全性強的演算法,理論上,凡是採取“訊息摘要” 方式的數字驗證演算法都是有“碰撞”的——也就是兩個不同的東西算出的訊息摘要相同,互通作弊圖就是如此。但是安全性高的演算法要找到指定資料的“碰撞”很困 難,而利用公式來計算“碰撞”就更困難一目前為止通用安全演算法中僅有MD5被破解。


加密演算法是密碼技術的核心,以上這些加密演算法是常用的加密演算法,而這些演算法有些已經遭到破譯,有些安全度不高,有些強度不明,有些待進—步分析,有些需要深入研究,而神祕的加密演算法世界,又會有新的成員加入,期待更安全的演算法誕生。






另:幾種摘要演算法的比較


1、CRC8、CRC16、CRC32
CRC(Cyclic Redundancy Check,迴圈冗餘校驗)演算法出現時間較長,應用也十分廣泛,尤其是通訊領域,現在應用最多的就是 CRC32 演算法,它產生一個4位元組(32位)的校驗值,一般是以8位十六進位制數,如FA 12 CD 45等。CRC演算法的優點在於簡便、速度快,嚴格的來說,CRC更應該被稱為資料校驗演算法,但其功能與資料摘要演算法類似,因此也作為測試的可選演算法。
在 WinRAR、WinZIP 等軟體中,也是以 CRC32 作為檔案校驗演算法的。一般常見的簡單檔案校驗(Simple File Verify – SFV)也是以 CRC32演算法為基礎,它通過生成一個字尾名為 .SFV 的文字檔案,這樣可以任何時候可以將檔案內容 CRC32運算的結果與 .SFV 檔案中的值對比來確定此檔案的完整性。
與 SFV 相關工具軟體有很多,如MagicSFV、MooSFV等。
2、MD2 、MD4、MD5
這是應用非常廣泛的一個演算法家族,尤其是 MD5(Message-Digest Algorithm 5,訊息摘要演算法版本5),它由MD2、MD3、MD4發展而來,由Ron Rivest(RSA公司)在1992年提出,被廣泛應用於資料完整性校驗、資料(訊息)摘要、資料加密等。MD2、MD4、MD5 都產生16位元組(128位)的校驗值,一般用32位十六進位制數表示。MD2的演算法較慢但相對安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。
在網際網路上進行大檔案傳輸時,都要得用MD5演算法產生一個與檔案匹配的、儲存MD5值的文字檔案(字尾名為 .md5或.md5sum),這樣接收者在接收到檔案後,就可以利用與 SFV 類似的方法來檢查檔案完整性,絕大多數大型軟體公司或開源組織都是以這種方式來校驗資料完整性,而且部分作業系統也使用此演算法來對使用者密碼進行加密,另外,它也是目前計算機犯罪中資料取證的最常用演算法。
與MD5 相關的工具有很多,如 WinMD5等。
3、SHA1、SHA256、SHA384、SHA512
SHA(Secure Hash Algorithm)是由美國專門制定密碼演算法的 標準機構—— 美國國家標準技術研究院(NIST)制定的,SHA系列演算法的摘要長度分別為:SHA為20位元組(160位)、SHA256為32位元組(256位)、 SHA384為48位元組(384位)、SHA512為64位元組(512位),由於它產生的資料摘要的長度更長,因此更難以發生碰撞,因此也更為安全,它是 未來資料摘要演算法的發展方向。由於SHA系列演算法的資料摘要長度較長,因此其運算速度與MD5相比,也相對較慢。
SHA1的應用較為廣泛,主要應用於CA和數字證書中,另外在網際網路中流行的BT軟體中,也是使用SHA1來進行檔案校驗的。
4、RIPEMD、PANAMA、TIGER、ADLER32 等
RIPEMD是Hans Dobbertin等3人在對MD4,MD5缺陷分析基礎上,於1996年提出來的,有4個標準128、160、256和320,其對應輸出長度分別為16位元組、20位元組、32位元組和40位元組。

TIGER由Ross在1995年提出。Tiger號稱是最快的Hash演算法,專門為64位機器做了優化。

注:部落格原文地址http://blog.sina.com.cn/s/blog_6b3ca99d0102wgpz.html