4

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

  • 模量
  • 公共指数
  • 私人指数
  • 素数1
  • 素数2
  • 指数1
  • 指数2
  • 系数

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

我找到了一个使用OpenSSL来输出这些数据的网站。当我发现OpenSSL.NET时我非常兴奋,但是拆分 PKCS#12 文件的功能尚未实现。我想知道是否有人知道任何替代方案。

谢谢

罗汉

4

4 回答 4

4

干杯曼努埃尔,

我下载了 Bouncy Castle API,很快就找到了我需要的东西。源代码包含大量单元测试。

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);
                }                       
            }
        }
    }
}
于 2009-02-17T03:19:37.230 回答
2

我在最近的一个项目中,在它的 Java 端口上,可扩展地使用了 bouncy castle API,它完美无瑕地创造了奇迹。

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

http://www.bouncycastle.org/

于 2009-02-17T02:25:48.187 回答
0

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

于 2009-02-17T02:09:07.180 回答
0

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

win32 加密提供程序是一个不错的选择,但它在可以解析和生成的格式方面可能有点不灵活。

于 2009-02-17T02:22:39.003 回答