一、公鑰算法與私鑰算法
1、私鑰算法
私鑰加密算法,又稱?對稱加密算法,因為這種算法解密密鑰和加密密鑰是相同的。也正因為同一密鑰既用于加密又用于解密,所以這個密鑰是不能公開的。常見的有《DES加密算法》、《AES加密算法》。
2、公鑰算法
公鑰加密算法,也就是?非對稱加密算法,這種算法加密和解密的密碼不一樣,一個是公鑰,另一個是私鑰:
公鑰和私鑰成對出現
1.公開的密鑰叫公鑰,只有自己知道的叫私鑰
2.用公鑰加密的數據只有對應的私鑰可以解密
3.用私鑰加密的數據只有對應的公鑰可以解密
4.如果可以用公鑰解密,則必然是對應的私鑰加的密
5.如果可以用私鑰解密,則必然是對應的公鑰加的密
6.公鑰和私鑰是相對的,兩者本身并沒有規定哪一個必須是公鑰或私鑰。
二、實現數據的安全傳輸
要實現數據的安全傳輸,當然就要對數據進行加密了。
如果使用對稱加密算法,加解密使用同一個密鑰,除了自己保存外,對方也要知道這個密鑰,才能對數據進行解密。如果你把密鑰也一起傳過去,就存在密碼泄漏的可能。所以我們使用非對稱算法,過程如下:
首先 接收方 生成一對密鑰,即私鑰和公鑰;
然后,接收方 將公鑰發送給 發送方;
發送方用收到的公鑰對數據加密,再發送給接收方;
接收方收到數據后,使用自己的私鑰解密。
由于在非對稱算法中,公鑰加密的數據必須用對應的私鑰才能解密,而私鑰又只有接收方自己知道,這樣就保證了數據傳輸的安全性。
三、對信息進行數字簽名
除了保證數據的安全傳輸之外,公鑰體系的另一個用途就是對數據進行簽名。通常“數字簽名”是用來驗證發送方的身份并幫助保護數據的完整性。
例如:一個發送者 A 想要傳些資料給大家,用自己的私鑰對資料加密,即簽名。這樣一來,所有收到資料的人都可以用發送者的公鑰進行驗證,便可確認資料是由 A 發出來的了。(因為只有A使用私鑰簽名得到的信息,才能用這個公鑰來解) 采用數字簽名,可以確認兩點:
保證信息是由簽名者自己簽名發送的,簽名者不能否認或難以否認。
保證信息自簽發后到收到為止未曾作過任何修改。
之所以可以確認這兩點,是因為用公鑰可以解密的必然是用對應的私鑰加的密,而私鑰只有簽名者持有。
四、公鑰算法的缺點
現實中,公鑰機制也有它的缺點,那就是效率非常低,比常用的私鑰算法(如 DES 和 AES)慢上一兩個數量級都有可能。所以它不適合為大量的原始信息進行加密。為了同時兼顧安全和效率,我們通常結合使用公鑰算法和私鑰算法:
1.首先,發送方使用對稱算法對原始信息進行加密。
2.接收方通過公鑰機制生成一對密鑰,一個公鑰,一個私鑰。
3.接收方 將公鑰發送給 發送方。
4.發送方用公鑰對對稱算法的密鑰進行加密,并發送給接收方。
5.接收方用私鑰進行解密得到對稱算法的密鑰。
6.發送方再把已加密的原始信息發送給接收方。
接收方使用對稱算法的密鑰進行解密。
總結:
1.每個用戶都有一對私鑰和公鑰。
2.私鑰用來進行解密和簽名,是給自己用的。
3.公鑰由本人公開,用于加密和驗證簽名,是給別人用的。
4.當該用戶發送文件時,用私鑰簽名,別人用他給的公鑰解密,可以保證該信息是由他發送的。即數字簽名。
5.當該用戶接受文件時,別人用他的公鑰加密,他用私鑰解密,可以保證該信息只能由他看到。即安全傳輸。