程序員必須了解的計(jì)算機(jī)加密規(guī)則-公鑰和私鑰
這些密碼學(xué)的概念容易被搞混淆,的確也情有可原。因?yàn)楣€、私鑰、加密、認(rèn)證這些都是較為復(fù)雜的問(wèn)題,其概念不太容易理解,理解不透就容易產(chǎn)生各種似是而非的概念,為了讓大家對(duì)于密碼學(xué)有進(jìn)一步的了解,這里我就詳細(xì)解說(shuō)一下公鑰和私鑰的具體作用和使用方法。
加密和認(rèn)證
首先我們需要區(qū)分加密和認(rèn)證這兩個(gè)基本概念。
加密是將數(shù)據(jù)資料加密,使得非法用戶即使取得加密過(guò)的資料,也無(wú)法獲取正確的資料內(nèi)容,所以數(shù)據(jù)加密可以保護(hù)數(shù)據(jù),防止監(jiān)聽(tīng)攻擊。其重點(diǎn)在于數(shù)據(jù)的安全 性。身份認(rèn)證是用來(lái)判斷某個(gè)身份的真實(shí)性,確認(rèn)身份后,系統(tǒng)才可以依不同的身份給予不同的權(quán)限。其重點(diǎn)在于用戶的真實(shí)性。兩者的側(cè)重點(diǎn)是不同的。
公鑰和私鑰
其次我們還要了解公鑰和私鑰的概念和作用。
在現(xiàn)代密碼體制中加密和解密是采用不同的密鑰(公開(kāi)密鑰),也就是非對(duì)稱密鑰密碼系統(tǒng),每個(gè)通信方均需要兩個(gè)密鑰,即公鑰和私鑰,這兩把密鑰可以互為加解密。公鑰是公開(kāi)的,不需要保密,而私鑰是由個(gè)人自己持有,并且必須妥善保管和注意保密。
公鑰私鑰的原則:
- 一個(gè)公鑰對(duì)應(yīng)一個(gè)私鑰。
- 密鑰對(duì)中,讓大家都知道的是公鑰,不告訴大家,只有自己知道的,是私鑰。
- 如果用其中一個(gè)密鑰加密數(shù)據(jù),則只有對(duì)應(yīng)的那個(gè)密鑰才可以解密。
- 如果用其中一個(gè)密鑰可以進(jìn)行解密數(shù)據(jù),則該數(shù)據(jù)必然是對(duì)應(yīng)的那個(gè)密鑰進(jìn)行的加密。
非對(duì)稱密鑰密碼的主要應(yīng)用就是公鑰加密和公鑰認(rèn)證,而公鑰加密的過(guò)程和公鑰認(rèn)證的過(guò)程是不一樣的,下面我就詳細(xì)講解一下兩者的區(qū)別。
基于公開(kāi)密鑰的加密過(guò)程
比如有兩個(gè)用戶Alice和Bob,Alice想把一段明文通過(guò)雙鑰加密的技術(shù)發(fā)送給Bob,Bob有一對(duì)公鑰和私鑰,那么加密解密的過(guò)程如下:
- Bob將他的公開(kāi)密鑰傳送給Alice。
- Alice用Bob的公開(kāi)密鑰加密她的消息,然后傳送給Bob。
- Bob用他的私人密鑰解密Alice的消息。
上面的過(guò)程可以用下圖表示,Alice使用Bob的公鑰進(jìn)行加密,Bob用自己的私鑰進(jìn)行解密。

基于公開(kāi)密鑰的認(rèn)證過(guò)程
身份認(rèn)證和加密就不同了,主要用戶鑒別用戶的真?zhèn)巍_@里我們只要能夠鑒別一個(gè)用戶的私鑰是正確的,就可以鑒別這個(gè)用戶的真?zhèn)巍?/p>
還是Alice和Bob這兩個(gè)用戶,Alice想讓Bob知道自己是真實(shí)的Alice,而不是假冒的,因此Alice只要使用公鑰密碼學(xué)對(duì)文件簽名發(fā)送 給Bob,Bob使用Alice的公鑰對(duì)文件進(jìn)行解密,如果可以解密成功,則證明Alice的私鑰是正確的,因而就完成了對(duì)Alice的身份鑒別。整個(gè)身 份認(rèn)證的過(guò)程如下:
- Alice用她的私人密鑰對(duì)文件加密,從而對(duì)文件簽名。
- Alice將簽名的文件傳送給Bob。
- Bob用Alice的公鑰解密文件,從而驗(yàn)證簽名。
上面的過(guò)程可以用下圖表示,Alice使用自己的私鑰加密,Bob用Alice的公鑰進(jìn)行解密。

























