1、概述算法
非對稱加密算法,祕鑰都是成對的,公鑰(公開的,網絡上均可以看到),私鑰(私鑰的,只有本身知道)。每一個server都由一對祕鑰網絡
公鑰加密,用私鑰(祕鑰對)解密:加密
私鑰加密,用公鑰(祕鑰對)解密:spa
應用在不一樣場景server
2、email
Alice想發email給Bob。網絡上存在第三方 Eve數據
Alice 發email 數據分爲兩塊:一部分是數據自己也就是email自己,另外一部分是用Alice本身私鑰加密的特徵值加密算法
Eve截獲到Alice發的數據,它又兩種操做mail
僅僅篡改了數據自己,再發給Bob。Bob獲取到數據後,用Alice的公鑰進行解密特徵值。能解密(由於Eve沒有篡改,而且是用Alice公鑰加密的),說明這段數據確實是由Alice發送的。當Bob解密,得到特徵值。再把數據自己加密後與特徵值比較,發現不一致,說明,數據自己已經被修改了。解密
篡改數據,同時篡改特徵值。Eve獲取到Email後,用Alice的公鑰解密(確定能解密,由於是用Alice私鑰加密的),再篡改數據,並從新生成特徵值。但此時問題來了,Eve再也沒法用Alice的私鑰加密這段特徵值了(由於Alice的私鑰只有Alice本身知道),因此Eve將就要本身的私鑰加密。再發給Bob。當Bob獲取到Email後,他嘗試用Alice的公鑰進行解密,但此時是沒法解密的,由於這段是用Eve的私鑰進行加密的,因此Bob立馬就知道,這段數據不是Alice發送的了。
可是問題來了,Bob是如何獲取Alice的公鑰,Bob獲取的Alice的公鑰就是正確的嘛?