對稱加密:算法
A與 B 之間之間的通信數據都用同一套的密鑰來進行加密解密。安全
非對稱加密:加密
用公鑰和私鑰來加解密的算法。打個比方,A 的公鑰加密過的東西只能經過 A 的私鑰來解密;同理,A 的私鑰加密過的東西只能經過 A 的公鑰來解密。顧名思義,公鑰是公開的,別人能夠獲取的到;私鑰是私有的,只能本身擁有。code
可是非對稱加密也是存在漏洞,由於公鑰是公開的,若是有 C 冒充 B 的身份利用 A 的公鑰給 A 發消息,這樣就亂套了,因此接下來就採用非對稱加密+摘要算法+數字簽名的機制來確保傳輸安全。支付寶
常見的非對稱加密算法有:RSA、ECC(移動設備用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)hash
Hash算法:循環
Hash算法的特色是單向不可還原,用戶能夠經過hash算法對目標信息生成一段特定長度的惟一hash值,卻不能經過這個hash值從新得到目標信息。所以Hash算法經常使用在不可還原的密碼存儲、信息完整性校驗等。只要源數據不一樣,算法獲得的摘要一定不一樣。加密解密
常見的Hash算法有MD二、MD四、MD五、HAVAL、SHA密碼
數字簽名:支付
數字簽名用來,保證信息傳輸的完整性、發送者的身份認證、防止交易中的抵賴發生。
數字簽名是 A將原始明文經過 hash 算法獲得摘要,這個摘要是不可逆的;將明文加密,連同摘要一塊兒發送給B;B接收到後解密,獲得這個摘要 a
和加密的明文,再將加密明文解密獲得原始明文,而後經過同一 hash 算法獲得新的摘要 b
,比較 a
與 b
就可得知在傳輸過程當中是否被更改過。
所以數字簽名可以驗證信息的完整性。若是中途數據被纂改或者丟失。那麼對方就能夠根據數字簽名來辨別是不是來自對方的第一手信息數據。
完整的非對稱加密過程:
假如如今 你向支付寶 轉帳(術語數據信息),爲了保證信息傳送的保密性、真實性、完整性和不能否認性,須要對傳送的信息進行數字加密和簽名,其傳送過程爲: 1.首先你要確認是不是支付寶的數字證書,若是確認爲支付寶身份後,則對方真實可信。能夠向對方傳送信息, 2.你準備好要傳送的數字信息(明文)計算要轉的多少錢,對方支付寶帳號等; 3.你 對數字信息進行哈希運算,獲得一個信息摘要(客戶端主要職責); 4.你 用本身的私鑰對信息摘要進行加密獲得 你 的數字簽名,並將其附在數字信息上; 5.你 隨機產生一個加密密鑰,並用此密碼對要發送的信息進行加密(密文); 6.你用 支付寶的公鑰對剛纔隨機產生的加密密鑰進行加密,將加密後的 DES 密鑰連同密文一塊兒傳送給支付寶; 7.支付寶收到 你 傳送來的密文和加密過的 DES 密鑰,先用本身的私鑰對加密的 DES 密鑰進行解密,獲得 你隨機產生的加密密鑰; 8.支付寶 而後用隨機密鑰對收到的密文進行解密,獲得明文的數字信息,而後將隨機密鑰拋棄; 9.支付寶 用你 的公鑰對 你的的數字簽名進行解密,獲得信息摘要; 10.支付寶用相同的哈希算法對收到的明文再進行一次哈希運算,獲得一個新的信息摘要; 11.支付寶將收到的信息摘要和新產生的信息摘要進行比較,若是一致,說明收到的信息沒有被修改過。 12 肯定收到信息,而後進行向對方進行付款交易,一次非對稱密過程結束。在這後面的流程就不屬於本次非對稱加密的範疇,算支付寶我的的自我流程,也就是循環以上過程。