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