文本先簡單介紹常用的加密算法,後面将逐漸推送每個加密算法的加密原理與應用及java實作方式。
加密算法分對稱加密和非對稱算法,其中對稱加密算法的加密與解密密鑰相同,非對稱加密算法的加密密鑰與解密密鑰不同,此外,還有一類不需要密鑰的雜湊演算法。
常見的對稱加密算法主要有des、3des、aes等,常見的非對稱算法主要有rsa、dsa等,雜湊演算法主要有sha-1、md5等。
對稱算法又可分為兩類。一次隻對明文中的單個位(有時對位元組)運算的算法稱為序列算法或序列密碼。另一類算法是對明文的一組位進行運算(即運算之前将明文分為若幹組,然後分别對每一組進行運算,這些位組稱為分組),相應的算法稱為分組算法或分組密碼。
<b>des</b><b>加密算法</b>
des加密算法是一種分組密碼,以64位為分組對資料加密,它的密鑰長度是56位,加密解密用同一算法。des加密算法是對密鑰進行保密,而公開算法,包括加密和解密算法。這樣,隻有掌握了和發送方相同密鑰的人才能解讀由des加密算法加密的密文資料。是以,破譯des加密算法實際上就是搜尋密鑰的編碼。對于56位長度的密鑰來說,如果用窮舉法來進行搜尋的話,其運算次數為2的56次方。
<b>3des</b><b>(</b><b>triple des</b><b>)</b>
是基于des的對稱算法,對一塊資料用三個不同的密鑰進行三次加密,強度更高;
<b>aes</b><b>加密算法</b>
aes加密算法是密碼學中的進階加密标準,該加密算法采用對稱分組密碼體制,密鑰長度的最少支援為128、192、256,分組長度128位,算法應易于各種硬體和軟體實作。這種加密算法是美國聯邦政府采用的區塊加密标準,aes标準用來替代原先的des,已經被多方分析且廣為全世界所使用。
<b>rsa</b><b>加密算法</b>
rsa加密算法是目前最有影響力的公鑰加密算法,并且被普遍認為是目前最優秀的公鑰方案之一。rsa是第一個能同時用于加密和數宇簽名的算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被iso推薦為公鑰資料加密标準。rsa加密算法基于一個十分簡單的數論事實:将兩個大素數相乘十分容易,但想要對其乘積進行因式分解卻極其困難,是以可以将乘積公開作為加密密鑰。
<b>dsa</b><b>加密算法</b>
dsa是基于整數有限域離散對數難題的,dsa的一個重要特點是兩個素數公開,這樣,當使用别人的p和q時,即使不知道私鑰,你也能确認它們是否是随機産生的,還是作了手腳。這一點,rsa算法做不到。
相比于rsa,dsa 隻用于簽名,而 rsa 可用于簽名和加密。
<b>base64</b><b>加密算法</b>
base64加密算法是網絡上最常見的用于傳輸8bit位元組代碼的編碼方式之一,base64編碼可用于在http環境下傳遞較長的辨別資訊。
<b>md5</b><b>加密算法</b>
md5為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。
md5被廣泛用于各種軟體的密碼認證和鑰匙識别上。md5用的是哈希函數,它的典型應用是對一段資訊産生資訊摘要,以防止被篡改。md5的典型應用是對一段message産生fingerprin指紋,以防止被“篡改”。如果再有—個第三方的認證機構,用md5還可以防止檔案作者的“抵賴”,這就是所謂的數字簽名應用。md5還廣泛用于作業系統的登陸認證上,如unix、各類bsd系統登入密碼、數字簽名等諸多方。
<b>sha1</b><b>加密算法</b>
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實作代碼。 想及時擷取最新資訊可掃以下二維碼關注本人原創公衆号。