使用sn.exe生成公钥/私钥对以在RSA加密中使用

时间:2012-08-21 11:36:10

标签: c# visual-studio-2010 encryption rsa

使用sn.exe生成公钥/私钥对时,任何人都看错了,我以后可以使用私钥加密数据,然后给人们公钥,这样他们就可以解密我的密文了?我知道sn.exe用于强命名程序集,但由于它生成密钥对,我可以简单地使用这个方案吗?

我问这个问题,知道RSA是用公钥加密的。但我认为这是一个有效的用例,可以做相反的事情。

1 个答案:

答案 0 :(得分:2)

这实际上是两个问题:

  • 您是否应该使用sn.exe生成密钥对?
  • 您应该使用私钥加密数据吗?

第一个问题的答案是:不,不是真的。 SN.exe的密钥对生成实际上只对非常小的开发环境有用,并且要求您处理所有安全性。有更好的方法来生成包含密码保护(PFX)之类的证书容器。例如,看看MakeCert工具 - 它可用于生成自签名的X.509证书,这些证书可用于您可能想要执行的几乎所有加密操作。

不幸的是,第二个问题的答案也是:不,不是真的。从加密的角度来看,使用私钥加密某些东西并不重要;毕竟,公钥就是:公共。如果任何人都可以解密它(没有操作系统提供任何公钥保护,所以获得副本是微不足道的),加密它没有多大意义。如果目的是确保人们能够向您证明这一点,那么数字签名是一种更好的方式,在这种情况下,您所描述的正是您想要做的事情:使用私钥对其进行签名,使用免费提供的公钥验证签名。

现在,如果您打算将加密数据分发给多个收件人,请考虑使用PKCS#7 / CMS信封。既然你在谈论使用sn.exe,那就告诉我你正在使用.NET,所以你很幸运! EnvelopedCms类应该提供您所需要的。您需要的只是X.509证书中的收件人公钥(makecert to rescue!)。 MSDN有一个演练here

相关问题