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
*/