我仅在pem文件中有一个私钥,需要从中提取公钥。
目前我正在使用openssl:
openssl rsa -pubout -outform DER
我可以在c#(和Bouncycastle)中做同样的事情吗?
答案 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);
}
希望有所帮助:)