我有这段代码,我在多个地方找到了相同的代码。但是当我使用它时它返回null。
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Security;
string aToBeEncrypted= "asdfghikoksadjfkjsdfjsljfsadjf";
string pemFilename = @"M:\ConnectivityPackage_meltemi_KeyStore.pem";
byte[] plaintext = System.Text.Encoding.UTF8.GetBytes(aToBeEncrypted);
AsymmetricCipherKeyPair keyPair;
using (var reader = File.OpenText(pemFilename))
keyPair = (AsymmetricCipherKeyPair)new PemReader(reader).ReadObject();
keyPair是一个空对象。我做错了什么或者pem文件是什么?
答案 0 :(得分:0)
PemReader
的API似乎是纯垃圾。基本上,每次无法解析对象时,它都会返回null,但这并不意味着读取器中没有更多的对象。您必须跟踪自己流的结束。在尝试读取私钥时,以下内容对我有用:
string pemFile = "...";
using (var strReader = new StringReader(pemFile))
{
var pemReader = new PemReader(strReader);
while (strReader.Peek() != -1)
{
var parameter = pemReader.ReadObject() as RsaPrivateCrtKeyParameters;
if (parameter != null)
{
// Do something with the found private key
}
}
}