解码 PKCS#12 文件

发布于 2024-07-13 13:45:11 字数 614 浏览 10 评论 0原文

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

  • modulus
  • publicExponent
  • privateExponent
  • prime1
  • prime2
  • exponent1
  • exponent2coefficient
  • 我需要此信息,

以便我可以成功使用 PKCS#11 创建私钥并在 USB 令牌上进行证明。

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

谢谢

罗汉

I am looking for ways to decode a PKCS#12 file in .NET, I need to extract the private key and any certificates so that i can programatically access the following.

  • modulus
  • publicExponent
  • privateExponent
  • prime1
  • prime2
  • exponent1
  • exponent2
  • coefficient

I need this informatio so that i can successfully use PKCS#11 to create a private key and cetificate on a USB token.

I have found a website that uses OpenSSL to output this data. I was pretty excited when I found OpenSSL.NET however the functionallity to split PKCS#12 files hasn't been implemented yet. I was wondering if anyone knew of any altenatives.

Thanks

Rohan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

逆蝶 2024-07-20 13:45:11

干杯曼努埃尔,

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

Cheers Manuel,

I downloaded the Bouncy Castle API and it didn't take long to find what i needed. The source code includes an extensive list of unit tests.

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);
                }                       
            }
        }
    }
}
深海里的那抹蓝 2024-07-20 13:45:11

我在最近的一个项目中,在其 Java 端口上使用了可扩展的充气城堡 API,它完美地发挥了奇迹。

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

http://www.bouncycastle.org/

I've used bouncy castle API extensibly on a recent project, on its Java port, and it works wonders, flawlessly.

I bet their C# isn't much different, and it does a really good work at what is targeted.

http://www.bouncycastle.org/

终弃我 2024-07-20 13:45:11

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

AFAIK you have to pinvoke out to the win32 crypto libraries, see this MSDN article: http://msdn.microsoft.com/en-us/library/ms867088.aspx

固执像三岁 2024-07-20 13:45:11

您应该能够通过 pInvoke 直接使用 OpenSSL。 当 OpenSSL.NET 项目开始运行时,也许您可​​以为其做出贡献。

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

You should be able to use OpenSSL directly via pInvoke. Maybe you could contribute back to the OpenSSL.NET project when you get it working.

The win32 crypto providers is a good alternative, but it can be a bit inflexible in terms of what formats it can parse and generate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文