1

任何人都认为使用 sn.exe 生成公钥/私钥对有什么问题,我以后可以用它来使用私钥加密数据,然后给人们公钥,以便他们可以解密我的密文?我知道 sn.exe 用于强命名程序集,但由于它生成一个密钥对,我可以简单地使用这个方案吗?

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

4

1 回答 1

2

这真的是两个问题:

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

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

不幸的是,第二个问题的答案也是:不,不是。从加密的角度来看,用私钥加密东西没有多大意义。毕竟,公钥就是这样:public。如果任何人都可以解密它(没有操作系统提供对公钥的任何保护,因此获取副本很简单),那么加密它就没有多大意义了。如果目的是确保人们可以证明它来自您,那么数字签名是一种更好的方法,在这种情况下,您所描述的正是您想要做的:用私钥签名,使用免费提供的公钥验证签名。

现在,如果您的意图是将加密数据分发给多个收件人,请考虑使用 PKCS #7/CMS 信封。由于您在谈论使用 sn.exe,这告诉我您正在使用 .NET,所以您很幸运!EnvelopedCms 类应该提供您所需要的。您所需要的只是收件人的 X.509 证书中的公钥(makecert 来救援!)。MSDN在这里有一个演练。

于 2012-08-21T13:13:02.377 回答