編解碼
Base64編碼算法
- Base64編碼算法是一種用64個字符(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)來表示任意二進制數(shù)據(jù)的方法褒侧。
- base64 只是一種編碼方式蔚约,并不是一種加密算法誊辉,不要使用 base64 來加密數(shù)據(jù)。
對稱加密
- 在對稱加密算法中冯键,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去。
- 收信方收到密文后脯厨,若想解讀原文璧微,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密作箍,才能使其恢復(fù)成可讀明文。
- 在對稱加密算法中前硫,使用的密鑰只有一個胞得,發(fā)收信雙方都使用這個密鑰對數(shù)據(jù)進行加密和解密,這就要求解密方事先必須知道加密密鑰屹电。
- 該算法的缺點是阶剑,如果一旦密鑰泄漏,那么加密的內(nèi)容將都不可信了危号。
非對稱加密
- 非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)个扰。
- 公開密鑰與私有密鑰是一對,如果用公開密鑰對數(shù)據(jù)進行加密葱色,只有用對應(yīng)的私有密鑰才能解密递宅;如果用私有密鑰對數(shù)據(jù)進行加密,那么只有用對應(yīng)的公開密鑰才能解密(這個過程可以做數(shù)字簽名)。
- 非對稱加密主要使用的是RSA算法办龄。
不可逆加密
MD5
CA認證
- CA的全稱是Certificate Authority(證書頒發(fā)機構(gòu))烘绽,它可以為企業(yè)頒發(fā)數(shù)字證書確認這些企業(yè)的身份,同時也可以吊銷數(shù)字證書俐填。
- 在HTTPS中需要一個SSL證書安接,該證書也屬于數(shù)字證書的一種由CA進行頒發(fā),內(nèi)容包括公鑰+申請者與頒發(fā)者信息+簽名.
具體的證書驗證過程:
- 客戶端請求服務(wù)器
- 服務(wù)器將證書和數(shù)字簽名通過私鑰加密攜帶著公鑰一同傳遞給客戶端
- 客戶端收到后首先拿著公鑰解密證書英融,拿著證書去CA機構(gòu)進行認證是否合法
- 如果證書合法就對證書進行hash運算盏檐,再將數(shù)字簽名解密,對比兩個hash值驶悟,如果一致代表證書沒有被冒充胡野。
另外,進行CA認證一般是要收費的
SSL
SSL全稱為Secure Sockets Layer(安全套接層)痕鳍,沒錯硫豆,它就是HTTPS的核心,換句話說就是HTTPS就是HTTP+SSL笼呆,通過SSL可以實現(xiàn)HTTP安全傳輸熊响,實現(xiàn)原理就是基于上面幾個小結(jié)所講的對稱加密、非對稱加密诗赌、CA認證汗茄,下面我先用一張圖來代表SSL整個流程,如圖:
- 客戶端請求服務(wù)器铭若,并攜帶支持的加密算法
- 服務(wù)器選定加密算法剔难,將確認的加密算法+公鑰+證書一并返回給客戶端
- 客戶端收到會拿著公鑰去進行CA認證,如果認證成功就生成一個對稱秘鑰用公鑰加密并返回給服務(wù)器奥喻,否則就視為服務(wù)器為非法服務(wù)器偶宫。
- 服務(wù)器拿到對稱秘鑰后通過私鑰進行解密并保存,此后客戶端和服務(wù)器就可以通過該秘鑰對數(shù)據(jù)進行加密傳輸
- 服務(wù)器發(fā)送數(shù)據(jù)前需要對數(shù)據(jù)進行一次hash運算得到一個hash值环鲤,對數(shù)據(jù)和hash值加密后傳輸給客戶端
- 客戶端收到數(shù)據(jù)后對數(shù)據(jù)進行解密纯趋,然后對數(shù)據(jù)進行一次hash運算得到一個hash值,并解密服務(wù)器傳來的hash值冷离,將兩個hash值進行比較吵冒,如果不相同可視為數(shù)據(jù)中途被篡改