非對稱演算法(公鑰 私鑰)

2021-06-07 14:01:47 字數 1076 閱讀 8241

首先無論採用何種演算法,公鑰與私鑰都基於以下前提。

1,只有公鑰可以解密,通過私鑰加密的資訊。

2,只有私鑰可以解密,通過公鑰加密的資訊。所以公私鑰必須成對使用。

3,通過私鑰可以反推出公鑰。

4,通過公鑰很難反推出私鑰。

5,公鑰對外公開,私鑰自己持有。

因此,我們製作出 公鑰/私鑰 對後,只將公鑰公開給對方(乙方)。私鑰只有自己(甲方)知道。

這樣可以保證通過加密後的資訊,只有甲方才能解密。但是有個問題,公鑰容易洩露,第三方得到公鑰後雖然不能解密資訊。但可以冒充乙方向甲方傳送偽訊息。

為了解決這個問題,需要乙方也製作一套 公鑰/私鑰,然後將其製作的公鑰公開給甲方。

然後按如下過程傳遞訊息

1,乙方送訊息:先用甲方提供的公鑰加密

再用乙方製作的私鑰加密(保證送訊息的人是乙方)

2,甲方得到訊息:先用乙方提供的公鑰解密

再用甲方製作的私鑰解密(保證只有甲方能讀)

常用的rsa,利用大素數乘積的特性。

使用非對稱演算法除了可以用來加密,還可用作數字簽名,用以判斷檔案(資訊)有沒有被別人動過。

方法很簡單,將檔案序列化,然後用甲方製作的私鑰加密後,將加密結果連同檔案。一起送給乙方。

乙方拿到檔案和加密結果後,先用將加密結果用甲方提供的公鑰解密,再將檔案序列化。

對照兩個結果,如一致,說明檔案是甲方製作的。

當然,由於非對稱演算法的代價是對稱演算法的約1000倍,所以通常使用雜湊演算法來代替序列化,對雜湊值進行加密。

常用的雜湊演算法有shax,md5

最後上一段.net 的非對稱加密的**

using system.security.cryptography;

system.console.writeline("message :" + smsg);

system.console.writeline("encrypted :" + senc);

system.console.writeline("decrypted :" + sdec);

system.console.readline();}}

}

非對稱加密中公鑰 私鑰的理解

公鑰 所有人都可以得到的金鑰。比如說 a的公鑰,a b c都可以得到並使用。同理 b的公鑰,a b c都可以得到並使用。c的公鑰,a b c都可以得到並使用。私鑰 只用自己才能用的金鑰。比如說 a的私鑰只有a自己才能得到並使用,b和c不可能得到,除非a自己洩露給b和c。同理 b的私鑰只有b自己才能得...

公鑰 私鑰 公鑰私鑰

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

非對稱加密演算法(公鑰與金鑰)

非對稱加密演算法傳送方使用公鑰,接收方使用私鑰。首先回顧一下非對稱加密演算法的相關知識,闡述一下自己的理解,再說明的原因。非對稱加密演算法 該演算法需要兩個金鑰 公開金鑰和私有金鑰。公開金鑰與私有金鑰是一對,如果用公開金鑰對資料進行加密,只有用對應的私有金鑰才能解密 如果用私有金鑰對資料進行加密,那...