【问题标题】:Decode a PKCS#12 file解码 PKCS#12 文件
【发布时间】:2010-10-07 23:57:26
【问题描述】:

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

  • 模数
  • 公共指数
  • 私有指数
  • 素数1
  • 素数2
  • 指数1
  • 指数2
  • 系数

我需要这些信息,以便我可以成功使用 PKCS#11 在 USB 令牌上创建私钥和证书。

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

谢谢

罗汉

【问题讨论】:

    标签: c# pfx pkcs#12


    【解决方案1】:

    干杯曼努埃尔,

    我下载了 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);
                    }                       
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

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

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

      http://www.bouncycastle.org/

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-11-17
            • 2015-02-14
            • 1970-01-01
            • 2012-09-07
            • 2011-11-15
            • 2013-10-16
            • 2021-09-22
            • 2014-03-21
            相关资源
            最近更新 更多