Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解码PKCS#12文件_C#_Pfx_Pkcs#12 - Fatal编程技术网

C# 解码PKCS#12文件

C# 解码PKCS#12文件,c#,pfx,pkcs#12,C#,Pfx,Pkcs#12,我正在寻找在.NET中解码PKCS#12文件的方法,我需要提取私钥和任何证书,以便通过编程访问以下内容 模数 公众指数 私人指数 prime1 prime2 指数1 指数2 系数 我需要这些信息,以便我能够成功地使用PKCS#11在USB令牌上创建私钥和证书 我发现了一个用于输出这些数据的网站。当我发现分割PKCS#12个文件的功能尚未实现时,我非常激动。我想知道是否有人知道任何替代品 谢谢 Rohan如果您必须使用pinvoke访问win32加密库,请参阅此MSDN文章:您应该能够通过pi

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

  • 模数
  • 公众指数
  • 私人指数
  • prime1
  • prime2
  • 指数1
  • 指数2
  • 系数
我需要这些信息,以便我能够成功地使用PKCS#11在USB令牌上创建私钥和证书

我发现了一个用于输出这些数据的网站。当我发现分割PKCS#12个文件的功能尚未实现时,我非常激动。我想知道是否有人知道任何替代品

谢谢


Rohan

如果您必须使用pinvoke访问win32加密库,请参阅此MSDN文章:

您应该能够通过pinvoke直接使用OpenSSL。当OpenSSL.NET项目开始工作时,也许您可以为它做出贡献


win32 crypto providers是一个很好的替代方案,但它在解析和生成格式方面可能有点不灵活。

我在最近的一个项目中,在其Java端口上扩展使用了bouncy castle API,它工作得非常出色,完美无缺

我打赌他们的C#没什么不同,它在目标方面做得非常好

为曼努埃尔干杯

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