#原文來自:https://www.cnblogs.com/xdp-gacl/p/3744053.html 截取的片段,博主寫的很好。
3.1、對稱加密
3.2、非對稱加密
非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。 非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰並將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密后再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密。另一方面,甲方可以使用乙方的公鑰對機密信息進行簽名后再發送給乙方;乙方再用自己的私匙對數據進行驗簽。
非對稱加密工作原理
發送方使用接收方的公鑰對數據加密,而接收方則使用自己的私鑰解密,這樣,信息就可以安全無誤地到達目的地了,即使被第三方截獲,由於沒有相應的私鑰,也無法進行解密。通過數字的手段保證加密過程是一個不可逆過程,即只有用私有密鑰才能解密。
非對稱性加密依然沒有解決數據傳輸的安全性問題,比如A想向B發數據,B首先生成一對密鑰(公鑰和私鑰),然后將公鑰發給A,A拿到B發給他的公鑰有就可以使用公鑰加密數據后發給B,然而在B公鑰發送給A的這個過程中,很有可能會被第三方C截獲,C截獲到B的公鑰后,也使用B的公鑰加密數據,然后發給B,B接收到數據后就暈了,因為搞不清楚接收到的數據到底是A發的還是C發的,這是其中一個問題,另一個問題就是,C截獲到B發的公鑰后,C可以自己生成一對密鑰(公鑰和私鑰),然后發給A,A拿到公鑰后就以為是B發給他的,然后就使用公鑰加密數據發給B,發送給B的過程中被C截獲下來,由於A是用C發給他的公鑰加密數據的,而C有私鑰,因此就可以解密A加密過后的內容了,而B接收到A發給他的數據后反而解不開了,因為數據是用C的公鑰加密的,B沒有C的私鑰,所以就無法解密。所以,非對稱性加密存在一個問題:A想向B發數據,A如何確定拿到的公鑰一定是B發的呢?那么如何解決這個問題呢?只能靠一個第三方機構(CA機構,即證書授權中心(Certificate Authority ),或稱證書授權機構)來擔保。A想向B發數據,B首先將公鑰發給CA機構,CA機構拿到B的公鑰后跑到B的家里問:這是你發的公鑰嗎?B確認過后說是:沒錯,是我發的!那么此時CA機構就會為B的公鑰做擔保,生成一份數字證書給B,數字證書包含了CA的擔保認證簽名和B的公鑰,B拿到CA的這份數字證書后,就發給A,A拿到數字證書后,看到上面有CA的簽名,就可以確定當前拿到的公鑰是B發的,那么就可以放心大膽地使用公鑰加密數據,然后發給B了。