如何从c#中的私钥中提取公钥?

时间:2015-07-31 07:05:25

标签: c# rsa bouncycastle

在pem文件中有一个私钥,需要从中提取公钥。

目前我正在使用openssl:

openssl rsa -pubout -outform DER

我可以在c#(和Bouncycastle)中做同样的事情吗?

2 个答案:

答案 0 :(得分:-1)

在windows world中,包含私钥的文件称为PFX 因此,您可以尝试使用.net System.Security.Cryptography基础结构将证书导入集合:

X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import(filePath, password, X509KeyStorageFlags.PersistKeySet);

代码块取自此处:
How to retrieve certificates from a pfx file with c#?

答案 1 :(得分:-2)

如果.pem文件已包含公钥,则通常在行

之间
-----BEGIN PUBLIC KEY-----

-----END PUBLIC KEY-----
pem文件的

至少Openssl会这样做,但你应该仔细检查。 有关pem文件结构的概述,请参阅this链接。

所以你可以使用Substring方法获得它。这应该有效:

static void ExtractPublicKeyFromPem(string path)
    {
        var startText = "-----BEGIN PUBLIC KEY-----";
        var endText = "-----END PUBLIC KEY-----";

        var pem = System.IO.File.ReadAllText(path);
        var start = pem.LastIndexOf(startText);
        var end = pem.IndexOf(endText);

        var publicKey = pem.Substring(start, end - start);
    }

希望有所帮助:)