解码PKCS#12文件

我正在寻找在.NET中解码PKCS#12文件的方法,我需要提取私钥和任何证书,以便我可以以编程方式访问以下内容。

  • 系数
  • publicExponent
  • privateExponent
  • prime1
  • prime2
  • exponent1
  • exponent2
  • 系数

我需要这些信息,以便我可以成功使用PKCS#11创建私钥并在USB令牌上进行设置。

我找到了一个使用OpenSSL输出这些数据的网站。 当我发现OpenSSL.NET时,我非常兴奋,但是分割PKCS#12文件的function还没有实现。 我想知道是否有人知道任何替代品。

谢谢

罗汉

我已经在最近的项目上,在其Java端口上可扩展地使用了bouncy castle API,它可以完美地运行奇迹。

我敢打赌他们的C#并没有太大的不同,而且它在目标方面做得非常好。

http://www.bouncycastle.org/

干杯曼努埃尔,

我下载了Bouncy Castle API,没过多久就找到了我需要的东西。 源代码包含大量unit testing。

static void Main(string[] args) { char[] password = new char[] {'p','a','s','s','w','o','r','d'}; using(StreamReader reader = new StreamReader(@"Test.pfx")) { Pkcs12Store store = new Pkcs12Store(reader.BaseStream,password); foreach (string n in store.Aliases) { if(store.IsKeyEntry(n)) { AsymmetricKeyEntry key = store.GetKey(n); if(key.Key.IsPrivate) { RsaPrivateCrtKeyParameters parameters = key.Key as RsaPrivateCrtKeyParameters; Console.WriteLine(parameters.PublicExponent); } } } } } 

AFAIK你必须转发到win32加密库,请参阅此MSDN文章: http : //msdn.microsoft.com/en-us/library/ms867088.aspx

您应该可以通过pInvoke直接使用OpenSSL。 也许你可以在OpenSSL.NET项目工作时回馈它。

win32加密提供程序是一个很好的选择,但就它可以解析和生成的格式而言,它可能有点不灵活。