github 公鑰 私鑰 理解公鑰與私鑰

2021-10-16 19:52:14 字數 1608 閱讀 2444

一、公鑰演算法與私鑰演算法

1、私鑰演算法

私鑰加密演算法,又稱 對稱加密演算法,因為這種演算法解密金鑰和加密金鑰是相同的。也正因為同一金鑰既用於加密又用於解密,所以這個金鑰是不能公開的。常見的有《des加密演算法》、《aes加密演算法》。

2、公鑰演算法

公鑰加密演算法,也就是 非對稱加密演算法,這種演算法加密和解密的密碼不一樣,乙個是公鑰,另乙個是私鑰:

公鑰和私鑰成對出現

公開的金鑰叫公鑰,只有自己知道的叫私鑰

用公鑰加密的資料只有對應的私鑰可以解密

用私鑰加密的資料只有對應的公鑰可以解密

如果可以用公鑰解密,則必然是對應的私鑰加的密

如果可以用私鑰解密,則必然是對應的公鑰加的密

公鑰和私鑰是相對的,兩者本身並沒有規定哪乙個必須是公鑰或私鑰。

二、實現資料的安全傳輸

要實現資料的安全傳輸,當然就要對資料進行加密了。

如果使用對稱加密演算法,加解密使用同乙個金鑰,除了自己儲存外,對方也要知道這個金鑰,才能對資料進行解密。如果你把金鑰也一起傳過去,就存在密碼洩漏的可能。所以我們使用非對稱演算法,過程如下:

首先 接收方 生成一對金鑰,即私鑰和公鑰;

然後,接收方 將公鑰傳送給 傳送方;

傳送方用收到的公鑰對資料加密,再傳送給接收方;

接收方收到資料後,使用自己的私鑰解密。

由於在非對稱演算法中,公鑰加密的資料必須用對應的私鑰才能解密,而私鑰又只有接收方自己知道,這樣就保證了資料傳輸的安全性。

三、對資訊進行數字簽名

除了保證資料的安全傳輸之外,公鑰體系的另乙個用途就是對資料進行簽名。通常「數字簽名」是用來驗證傳送方的身份並幫助保護資料的完整性。

例如:乙個傳送者 a 想要傳些資料給大家,用自己的私鑰對資料加密,即簽名。這樣一來,所有收到資料的人都可以用傳送者的公鑰進行驗證,便可確認資料是由 a 發出來的了。(因為只有a使用私鑰簽名得到的資訊,才能用這個公鑰來解) 採用數字簽名,可以確認兩點:

保證資訊是由簽名者自己簽名傳送的,簽名者不能否認或難以否認。

保證資訊自簽發後到收到為止未曾作過任何修改。

之所以可以確認這兩點,是因為用公鑰可以解密的必然是用對應的私鑰加的密,而私鑰只有簽名者持有。

四、公鑰演算法的缺點

現實中,公鑰機制也有它的缺點,那就是效率非常低,比常用的私鑰演算法(如 des 和 aes)慢上一兩個數量級都有可能。所以它不適合為大量的原始資訊進行加密。為了同時兼顧安全和效率,我們通常結合使用公鑰演算法和私鑰演算法:

首先,傳送方使用對稱演算法對原始資訊進行加密。

接收方通過公鑰機制生成一對金鑰,乙個公鑰,乙個私鑰。

接收方 將公鑰傳送給 傳送方。

傳送方用公鑰對對稱演算法的金鑰進行加密,並傳送給接收方。

接收方用私鑰進行解密得到對稱演算法的金鑰。

傳送方再把已加密的原始資訊傳送給接收方。

接收方使用對稱演算法的金鑰進行解密。

總結:每個使用者都有一對私鑰和公鑰。

私鑰用來進行解密和簽名,是給自己用的。

公鑰由本人公開,用於加密和驗證簽名,是給別人用的。

當該使用者傳送檔案時,用私鑰簽名,別人用他給的公鑰解密,可以保證該資訊是由他傳送的。即數字簽名。

當該使用者接受檔案時,別人用他的公鑰加密,他用私鑰解密,可以保證該資訊只能由他看到。即安全傳輸。

公鑰 私鑰 公鑰私鑰

小明想寫一封情書給小紅,但是這封情書是很私密的東西,小明不想讓除了小紅之外的其他人知道。小明看過flydean的部落格,他知道了有個對稱加密的好東西。於是小明想,如果我將情書使用對稱加密演算法進行加密,然後再把加密後的情書傳給小紅豈不就是安全了?但是小明又仔細思考了一下,發現了乙個問題,對稱加密演算...

github公鑰私鑰

剛接觸git有很多困惑 1.為什麼要公鑰和私鑰呢,到底有啥用呢 詳細點 2.為什麼要把我的公鑰加到git專案之中儲存起來 3.比如,某路人甲 想給我的專案提供一些 他沒有我的公鑰可以push給我嗎?1.2.git伺服器上儲存的是公鑰,你本地儲存的是私鑰,當你push本地 庫到遠端 庫,伺服器會要求你...

理解公鑰與私鑰

1 私鑰演算法 私鑰加密演算法,又稱對稱加密演算法,因為這種演算法解密金鑰和加密金鑰是相同的。也正因為同一金鑰既用於加密又用於解密,所以這個金鑰是不能公開的。常見的有 des加密演算法 aes加密演算法 2 公鑰演算法 公鑰加密演算法,也就是非對稱加密演算法,這種演算法加密和解密的密碼不一樣,乙個是...