【问题标题】:Public Key (Assembly a like) extraction from pfx file从 pfx 文件中提取公钥(类似程序集)
【发布时间】:2011-09-05 07:17:26
【问题描述】:

我在从 PFX 文件中提取公钥时遇到问题。我使用的第一件事是 X509Certificate2。但是以这种方式收到的公钥是加密的,我希望这个密钥与 InternalsVisibleTo Attribute - 在 Examples 部分中有一个这样的键的示例。有没有办法以兼容的形式提取此密钥(与 InternalsVisibleTo 兼容)。

【问题讨论】:

  • 您是在尝试验证 Authenticode 签名还是什么?如果需要验证验证码,那么这种验证的过程不同于比较公钥。它涉及 (a) 检查签名和 (b) 验证证书。
  • 嗨,尤金。我正在尝试获取公钥,因为我需要编写将 InternalsVisibleTo 属性添加到 AssemblyInfo 文件的自动过程。不幸的是,当我没有由 *.proj 生成的程序集时,我需要考虑场景,但我有一个签署此程序集的 pfx(在帮助下我想提取此公钥)。
  • 可以使用密钥对(使用 sn.exe 进行 .NET 签名)和 Authenticode(在这种情况下可能涉及 PFX 文件)对程序集进行签名。您正在寻找的是 .NET 签名,但它不涉及 PFX。所以这里的过程有些混乱。
  • 我知道可以使用 snk(密钥对)对程序集进行签名。从此类文件中获取公钥没有问题。但是我需要使用 pfx 文件。例如,可以使用 X509Certificate2 加载它。我的问题从这里开始。 X509Certificate2 中的公钥采用“模数和指数”形式。有没有办法以程序集公钥形式获取公钥(不使用 sn.exe,只使用 .NET BCL)?这可能吗?
  • 不确定您在汇编中所指的公钥是什么?您能否在帖子中提供更多信息。可能是您的基于 X509Certificate2 的公钥和组装中的公钥的一些屏幕截图。另一方面,如果它只是从 PFX 中提取公钥,那么这是一个简单的过程,我可以为您提供帮助。

标签: c# .net encryption cryptography pfx


【解决方案1】:

只是格式问题,即 X509Certificate2 应该返回解密的公钥(或失败,例如密码错误)。

我建议您遵循 Mono 对强名称程序集所做的操作,即它自己的 sn 工具。虽然 Mono 的 sn.exe 不直接读取 PKCS#12 文件,但它可以从密钥容器中读取,因此在这两种情况下您最终都会得到 RSACryptoServiceProvider

只需深入了解source 代码,它都是 C# 代码,而且不是很长,您会在那里找到您需要的内容(或在所涉及的少数帮助类之一中)。

【讨论】:

  • 就是这样。来自 X509Certificate2 的公钥需要转换为 InternalsVisibleTo 可以接受。挖掘 sn.exe(来自单声道)而不是通过 StrongNameCryptoConvert 的源对我的情况有所帮助。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 2013-12-10
  • 1970-01-01
  • 2017-12-18
  • 2013-04-30
  • 2017-12-15
相关资源
最近更新 更多