2010-03-27 79 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