详解js对称加密和非对称加密
詳解js對稱加密和非對稱加密
https保證數據在傳輸過程中不被竊取和篡改,從而保證傳輸安全
1、加密
這個密鑰可以是任何東西,比如說一個字符串,這個字符串通過一種數學算法,可以把我們的信息根據密鑰產生加密過后的信息,又可以通過一種密鑰解密成原始信息。
- 一開始客戶端請求服務器的時候,服務器產生一個密鑰,并且返回一個密鑰給客戶端告訴客戶端使用這個密鑰進行通信,客戶端再發生數據的時候就會通過服務器給的密鑰進行加密傳送給服務器
缺點:在第一個發送請求的時候,第三方就獲取到密鑰,就不能保證數據不被竊取與篡改。
非對稱加密:產生一對密鑰,一個用于加密,一個用于解密
- 服務器先產生兩個密鑰,一個公鑰,一個私鑰,私鑰永遠不發出去。只發出去公鑰。服務器和客戶端要想要通信,服務器會給客戶端先發送一個公鑰,客戶端用公鑰加密數據傳給服務器,服務器用私鑰解密,服務器用公鑰加密給客戶端回消息,但是由于客戶端沒有私鑰解不了密。怎么辦呢?
這就用到非對稱加密和對稱加密的結合
服務器產生一個公鑰key1和私鑰key1,客戶端想要和服務器通信,服務器先發一個公鑰key1,客戶端產生一個對稱加密的密鑰key2,將key2用公鑰加密傳輸給服務器,服務器用私鑰key1解密,然后服務器得到了key2,后續就用key2加密傳輸數據
這樣還是會有隱患。第三方還是可以篡改
比如:
客戶端與服務器開始通信了,最開始的時候,服務器給客戶端傳送了一個公鑰key1。第三方可以保存公鑰key1,并且產生公鑰key3和私鑰key3,然后將key3給客戶端,然后數據就會被篡改。
那到底怎么解決呢?
這時候就要引入第三方機構了——CA證書頒發機構
服務器在任何請求到來之前會先做一件事,權威機構自己有一對密鑰對(公鑰,私鑰),這個私鑰是絕對不能發出去的。
服務器把錢、自己的公鑰和域名發給權威機構,然后權威機構會給服務器頒發證書。
圖片可以看到,用私鑰加密的
證書簽名 = www.fuwuqi.com + CA公鑰key + 公鑰key1(服務器)
證書簽名的算法是公開的,它出現的目的,是為了讓每一個拿到證書的終端,可以驗證簽名是否被篡改。
客戶端和服務器開始通信了
-
第一步:服務器給瀏覽器證書,瀏覽器獲取證書,瀏覽器通過證書獲取到服務器的公鑰key1和證書簽名
-
接下來驗證簽名:證書簽名 = www.fuwuqi.com + CA公鑰key + 公鑰key1(服務器)
如果第一步被篡改了那驗證簽名是錯的。
-
http協議建立在TCP/IP之上
-
https協議建立在SSL(加密傳輸協議)+TCP/IP協議之上
總結
以上是生活随笔為你收集整理的详解js对称加密和非对称加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows live Writer
- 下一篇: 木头机器人变魔方_【转】一个木头魔方的制