幾種常見的加密算法

轉載自:https://blog.csdn.net/zyhlwzy/article/details/77946086
由於計算機軟件的非法複製,通信的泄密、數據安全受到威脅,解密及盜版問題日益嚴重,甚至引發國際爭端,所以在信息安全技術中,加密技術佔有不可替代的位置,因此對信息加密技術和加密手段的研究與開發,受到各國計算機界的重視,發展日新月異。現在我們就幾種常用的加密算法給大家比較一下。

DES加密算法

DES加密算法是一種分組密碼,以64位爲分組對數據加密,它的密鑰長度是56位,加密解密用同一算法。DES加密算法是對密鑰進行保密,而公開算法,包括加密和解密算法。這樣,只有掌握了和發送方相同密鑰的人才能解讀由DES加密算法加密的密文數據。

DES算法的入口參數有三個:Key、Data、Mode。其中Key爲8個字節共64位,是DES算法的工作密鑰;Data也爲8個字節64位,是要被加密或被解密的數據;Mode爲DES的工作方式,有兩種:加密或解密。

DES算法是這樣工作的:如Mode爲加密,則用Key 去把數據Data進行加密, 生成Data的密碼形式(64位)作爲DES的輸出結果;如Mode爲解密,則用Key去把密碼形式的數據Data解密,還原爲Data的明碼形式(64位)作爲DES的輸出結果。在通信網絡的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然後以密碼形式在公共通信網(如電話網)中傳輸到通信網絡的終點,數據到達目的地後,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

具體實現請參考DES加密算法java實現

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個密鑰。

具體實現請參考AES加密算法Java實現

RSA加密算法

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

具體實現請參考RSA加密算法Java實現

Base64加密算法

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

具體實現請參考Base64加密算法實現

MD5加密算法

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

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

具體實現請參考MD5加密算法Java實現

SHA1加密算法

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

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

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

具體實現請參考SHA1加密算法Java實現

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

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