先簡單的說下https
的加密過程算法
https
的握手本質上能夠說交換對稱密鑰的過程. 其中用到數字簽名(數字證書要進行數字簽名),非對稱加密(服務器公鑰加密解密)和對稱加密(握手完成以後的經過對稱密鑰對數據的加密解密)服務器
爲何
Charles
抓取https包手機必定要安裝信任Charles
根證書? 由於經過Charles
抓包,客戶端獲取到的數字證書是Charles
僞造的. 它也不可能合法.舉個例子,你向https://baidu.com
發送一個請求.Charles
返回給你的數字證書(即便是合法)的域名就對不上了.函數
CA證書的私鑰對數字證書進行加密以前,首寫要對其進行數字摘要,就是經過hash函數將明文生成固定長度的密文. 數字摘要算法在驗證數據的完整性很是有用. 若是有發送方發送了100W個字符. 要判斷這個100w個字符是否完整,只須要判斷對應100多位的數字摘要是否相同就好了. (常見的數字摘要算法有md5,sha1,hmac
)加密
發送 和 接收 雙方都使用相同的密鑰對數據進行 加密 和 解密。常見的對稱加密算法有AES,DES
加密. https
的對稱加密使用的是AES
code
非對稱加密算法,又稱爲 公開密鑰加密算法。它須要兩個密鑰,一個稱爲 公開密鑰 (public key),即 公鑰,另外一個稱爲 私有密鑰 (private key),即 私鑰。最經典的就是RSA算法,它是地球上最重要的算法!!!md5
數字簽名,就是驗證自身身份的一種方式。數字簽名由簽名和驗證組成. 發送者持有簽名(私鑰),接收者持有(公鑰)來驗證其身份。數字簽名是由數字摘要算法和非對稱加密算法組成.例如https
的數字簽名,就是先對服務器數字證書進行數字摘要(hash-1
),而後經過私鑰對生成的數字摘要(hash-1
)進行加密發送給客戶端。客戶端經過公鑰解密獲得hash-1
而後經過hash
算法對獲取到的數字證書進行數字摘要獲得(hash-2
).判斷hash-1
與hash-2
是否相同就能夠知道數字證書是否被劫持和篡改了hash