【问题标题】:Using sn.exe to generate public / private key pair to use in RSA encryption使用 sn.exe 生成用于 RSA 加密的公钥/私钥对
【发布时间】:2012-08-21 11:36:09
【问题描述】:

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

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

【问题讨论】:

  • 我认为使用 openSsl 更有意义 - snk 文件格式不像 pem 格式那样常见,使用 openSsl 时您将有更多选择

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


【解决方案1】:

这其实是两个问题:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-11
    • 2013-05-07
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2013-06-08
    • 2018-10-07
    • 1970-01-01
    相关资源
    最近更新 更多