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