395
魔獸
DES、AES、RSA等常用加密算法介紹與比較
文本先簡單介紹常用的加密算法,後麵將逐步推送每個加密算法的加密原理與應用及java實現方式。
加密算法分對稱加密和非對稱算法,其中對稱加密算法的加密與解密密鑰相同,非對稱加密算法的加密密鑰與解密密鑰不同,此外,還有一類不需要密鑰的散列算法。
常見的對稱加密算法主要有DES、3DES、AES等,常見的非對稱算法主要有RSA、DSA等,散列算法主要有SHA-1、MD5等。
對稱算法又可分為兩類。一次隻對明文中的單個位(有時對字節)運算的算法稱為序列算法或序列密碼。另一類算法是對明文的一組位進行運算(即運算之前將明文分為若幹組,然後分別對每一組進行運算,這些位組稱為分組),相應的算法稱為分組算法或分組密碼。
DES加密算法
DES加密算法是一種分組密碼,以64位為分組對數據加密,它的密鑰長度是56位,加密解密用同一算法。DES加密算法是對密鑰進行保密,而公開算法,包括加密和解密算法。這樣,隻有掌握了和發送方相同密鑰的人才能解讀由DES加密算法加密的密文數據。因此,破譯DES加密算法實際上就是搜索密鑰的編碼。對於56位長度的密鑰來說,如果用窮舉法來進行搜索的話,其運算次數為2的56次方。
3DES(Triple DES)
是基於DES的對稱算法,對一塊數據用三個不同的密鑰進行三次加密,強度更高;
AES加密算法
AES加密算法是密碼學中的高級加密標準,該加密算法采用對稱分組密碼體製,密鑰長度的最少支持為128、192、256,分組長度128位,算法應易於各種硬件和軟件實現。這種加密算法是美國聯邦政府采用的區塊加密標準,AES標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。
RSA加密算法
RSA加密算法是目前最有影響力的公鑰加密算法,並且被普遍認為是目前最優秀的公鑰方案之一。RSA是第一個能同時用於加密和數宇簽名的算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數據加密標準。RSA加密算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
DSA加密算法
DSA是基於整數有限域離散對數難題的,DSA的一個重要特點是兩個素數公開,這樣,當使用別人的p和q時,即使不知道私鑰,你也能確認它們是否是隨機產生的,還是作了手腳。這一點,RSA算法做不到。
相比於RSA,DSA 隻用於簽名,而 RSA 可用於簽名和加密。
Base64加密算法
Base64加密算法是網絡上最常見的用於傳輸8bit字節代碼的編碼方式之一,Base64編碼可用於在HTTP環境下傳遞較長的標識信息。
MD5加密算法
MD5為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。
MD5被廣泛用於各種軟件的密碼認證和鑰匙識別上。MD5用的是哈希函數,它的典型應用是對一段信息產生信息摘要,以防止被篡改。MD5的典型應用是對一段Message產生fingerprin指紋,以防止被“篡改”。如果再有—個第三方的認證機構,用MD5還可以防止文件作者的“抵賴”,這就是所謂的數字簽名應用。MD5還廣泛用於操作係統的登陸認證上,如UNIX、各類BSD係統登錄密碼、數字簽名等諸多方。
SHA1加密算法
SHA1是和MD5一樣流行的消息摘要算法。SHA加密算法模仿MD4加密算法。
SHA1主要適用於數字簽名標準裏麵定義的數字簽名算法。對於長度小於2“64位的消息,SHA1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。在傳輸的過程中,數據很可能會發生變化,那麼這時候就會產生不同的消息摘要。SHA1不可以從消息摘要中複原信息,而且兩個不同的消息不會產生同樣的消息摘要。這樣,SHA1就可以驗證數據的完整性,所以說SHA1是為了保證文件完整性的技術。
SHA1是一種比MD5的安全性強的算法,理論上,凡是采取“消息摘要”方式的數字驗證算法都是有“碰撞”的——也就是兩個不同的東西算出的消息摘要相同,互通作弊圖就是如此。但是安全性高的算法要找到指定數據的“碰撞”很困難,而利用公式來計算“碰撞”就更困難一目前為止通用安全算法中僅有MD5被破解。
各種加密算法比較如下:
對稱加密算法(加解密密鑰相同)
名稱 |
密鑰長度 |
運算速度 |
安全性 |
資源消耗 |
DES |
56位 |
較快 |
低 |
中 |
3DES |
112位或168位 |
慢 |
中 |
高 |
AES |
128、192、256位 |
快 |
高 |
低 |
非對稱算法(加密密鑰和解密密鑰不同)
名稱 |
成熟度 |
安全性(取決於密鑰長度) |
運算速度 |
資源消耗 |
RSA |
高 |
高 |
慢 |
高 |
DSA |
高 |
高 |
快 |
隻能用於數字簽名 |
散列算法比較
名稱 |
安全性 |
速度 |
SHA-1 |
高 |
慢 |
MD5 |
中 |
快 |
對稱與非對稱算法比較
名稱 | 密鑰管理 | 安全性 | 速度 |
對稱算法 |
比較難,不適合互聯網, 一般用於內部係統 |
中 |
快好幾個數量級(軟件加解密速度至少快100倍, 每秒可以加解密數M比特數據),適合大數據量的加解密處理 |
非對稱算法 | 密鑰容易管理 | 高 | 慢,適合小數據量加解密或數據簽名 |
以上給出了DES,3DES,AES,RSA等常見加密算法的介紹,後麵將陸續推送每一種加密算法的詳細實現流程以及相關的JAVA實現代碼。 想及時獲取最新信息可掃以下二維碼關注本人原創公眾號。
最後更新:2017-08-13 22:40:46