如何在c#中从私钥中提取公钥?
本文关键字:提取 公钥 私钥 | 更新日期: 2023-09-27 18:05:45
我只有在pem文件中有私钥,需要从中提取公钥。
目前我正在使用openssl:
openssl rsa -pubout -outform DER
我怎么能做同样的c#(和Bouncycastle)?
在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);
}
希望有帮助