對稱加密
DES
DES加密算法是一種分組密碼,以64位為分組對數據加密,它的密鑰長度是56位,加密解密用同一算法,加密速度快,但是容易破解安全性低。
3DES(Triple DES)
是基於DES的對稱算法,對一塊數據用三個不同的密鑰進行三次加密,強度更高,加強版DES。
(DES算法比較簡單,容易破解已不建議使用)
AES(微信用的就是這種加密方式)
秘鑰長度最長256bit,加解密速度快.AES標准用來替代原先的DES
優點:對稱加密的優點是加解密速度快
缺點:發送方和接收方都需要知道唯一的秘鑰,秘鑰容易泄露
非對稱加密
RSA(最常見)
對稱加密,私鑰加密公鑰解密或相反,私鑰可以推導出公鑰反之不行
RSA加解密速度慢不適合頻繁和大數據的加解密
還有一些其它場景常用的非對稱加密
ECC橢圓曲線加密(區塊鏈錢包中最常使用)
DSA
帶數字簽名的算法
優點:不需要泄露私鑰,安全性高
缺點:加解密計算量增大,速度慢
使用對稱加密時需要將秘鑰公布給對方,這樣就存在安全隱患。而使用非對稱加密則很消耗性能,速度慢,請求頻繁和數據量大的場景不適合。
如何綜合兩者長處呢?
我們可以結合AES 和 RSA一起使用,當需要公布AES秘鑰時使用需求方的公鑰將AES秘鑰加密,解密報文時使用解密出來的AES秘鑰解密,這樣就能綜合兩種加密方式的優勢。


B需要保證獲取AES密碼的是A,所以加密的必須是A的公鑰,這樣就只有A可以解密獲得AES密碼,其他人即使獲取到了帶AES秘鑰的密文,因為缺少私鑰也沒有辦法獲取到密碼
散列算法(hash算法)
md5(最常使用)
sha1,sha256(sha算法不同的版本)
SHA主要適用於數字簽名標准里面定義的數字簽名算法。是一種比MD5的安全性強的算法
hash算法因為其具有不可逆性,且輸出長度固定。所以主要用於做摘要場景,也就是數字簽名。
雖然都已經被破解
https://zh.wikipedia.org/wiki/SHA-1
但是我們可以采用多遍無規則hash一樣很難破解
或者在保存登陸密碼的場景可以加鹽值再hash
其它
base64
只是一種編碼格式,主要用於編碼http無法傳輸的數據格式。將無法傳輸的數據格式編碼為base64格式的字符串傳輸。比如使用文本傳輸圖片
aes+rsa使用
非對稱加密