2010-03-27 100 views
0

嗨,大家好,我一直在爲我的一些程序開發一個p2p命名空間。我創建了一個系統來加密/解密用這個類發送/接收的數據包。我使用的是基本公用密鑰系統:1)使用對稱加密來加密數據2)使用RSA加密對稱密鑰。然後當你解密時做相反的事情。驗證p2p節點

我在想,不過,你會如何驗證數據包是否來自它說的地方。我打算使用一個基本的證書系統(使用您的私有RSA密鑰進行加密,然後使用您的公鑰對其進行解密),但我不知道如何使用C#執行此操作。我正在使用RSACryptoServiceProvider類。

有誰知道這是怎麼回事? 謝謝, 最大

+2

嗯,到那時你只有一個問題要問開放 – Ben 2011-03-13 05:47:54

回答

1

安全發送數據包的標準協議是SSL/TLS。 TLSDTLS(和a fix for a recent flaw)的RFC是要走的路。它們也應該被認爲是學習和尋找想法的資源。

這聽起來像你是一個尋找MAC。同時執行加密和MAC的非常有效的一組密碼原語是AEAD密碼,例如參見CCMGCM分組密碼模式。

我不相信.NET支持任何AEAD密碼。您也可以使用.NET支持的較慢但完全適用的算法,也可以使用支持AEAD密碼的bouncycastle C# library

+0

感謝您的回答,但我沒有太大的密碼破譯的,你能不能「啞下來」了一下我;) 我需要一種方法讓一臺計算機知道一個數據包來自它說的發件人。 MAC不起作用(我大部分都能理解),我已經發送了md5哈希值。 謝謝, 最大 – Ben 2010-03-28 23:26:51

+0

所有更理由使用像SSL一樣的解決方案。我想,這太難以歪曲了。在理解之前需要進行一些研究。也許別人可以做得更好。 – 2010-03-29 00:32:49

+0

對不起,我完全忘了這個問題,但仍然想要一個anwser。當我通讀MAC的定義時,我意識到這不是我需要的。我需要一個證書,可以從預定義的RSA密鑰生成(使用前面提到的RSACryptoServiceProvider類) – Ben 2011-03-13 05:51:39