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

本文关键字:提取 公钥 私钥 | 更新日期: 2023-09-27 18:05:45

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

目前我正在使用openssl:

openssl rsa -pubout -outform DER

我怎么能做同样的c#(和Bouncycastle)?

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

在windows世界中包含私钥的文件称为PFX。
因此,您可以尝试使用。net System.Security.Cryptography infrastructure:

将证书导入集合。
X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import(filePath, password, X509KeyStorageFlags.PersistKeySet);

代码块取自这里:
如何检索证书从pfx文件与c#?

如果您的。pem文件已经包含了公钥,那么它通常在

-----BEGIN PUBLIC KEY-----

-----END PUBLIC KEY-----

.

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

可以通过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);
    }

希望有帮助