java 常用的加密算法及分類

1.加密算法分類:

    按照是否需要key加密解密分類:

               不需要key的加密:Base64加密,MD5,SHA1,SHA256

               需要key的加密:對稱加密算法(AES,DES,3DES) 非對稱加密算法(RSA)數字簽名算法(RSA+MD5) HAMC

  按照加密是否可逆分類:

               單向加密算法(不可解密):MD5,SHA1,SHA256,HMAC

               非單向加密算法(可解密):Base64,對稱加密算法(AES,DES,3DES) 非對稱加密算法(RSA),數字簽名算法;

 

2.加密算法介紹:

  Base64加密:準確的來說,更是一種編碼方式,可以有效的防止明文傳輸,並且可以對二進制文件(圖片等非文本文件)進行編碼。

MD5 SHA1 SHA256

三種典型的單向加密算法,都不需要key。加密長度固定

MD5 128位(16字節)

SHA1 160位

SHA256  256位

安全性方面,顯然SHA256(又稱SHA2)的安全性最高,但是耗時要比其他兩種多很多。MD5相對較容易碰撞,因此,SHA1應該是這三種中性能最好的一款加密算法。

通常我們不直接使用上述MD5加密。通常將MD5產生的字節數組交給Base64再加密一把,得到相應的字符串。

對稱加密算法:

AES與DES的比較:

優點:“DES”:運算速度快,資源消耗較少;“AES”:運算速度快,安全性高,資源消耗少

缺點:“DES”:安全性低

非對稱加密算法:

RSA 使用公鑰與私鑰的祕鑰對進行加密和解密,安全性高,但是加密速度與解密速度特別慢;

(1) 對稱加密加密與解密使用的是同樣的密鑰,所以速度快,但由於需要將密鑰在網絡傳輸,所以安全性不高。 
(2) 非對稱加密使用了一對密鑰,公鑰與私鑰,所以安全性高,但加密與解密速度慢。 
(3) 解決的辦法是將對稱加密的密鑰使用非對稱加密的公鑰進行加密,然後發送出去,接收方使用私鑰進行解密得到對稱加密的密鑰,然後雙方可以使用對稱加密來進行溝通。

數字簽名算法:

帶有公鑰私鑰的消息摘要算法;

作用: 
1. 驗證數據的完整性   (消息摘要算法)
2. 認證數據來源          (公鑰解密)
3. 抗否認                     (檢查一致性)

數字簽名遵循:私鑰簽名,公鑰認證;

常用的數字簽名算法:RSA,DSA,ECDSA

 /**
     * 密鑰對生成加解密算法 RSA 、 DSA 、 EC
     * RSA 摘要算法:  SHA1withRSA SHA224withRSA SHA256withRSA
     * DSA 摘要算法:  SHA1withDSA  SHA224withDSA   SHA256withDSA 
     * EC  摘要算法:  SHA1withECDSA SHA224withECDSA SHA512withECDSA
     */

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