Ich habe die folgende Methode, die einen verschlüsselten privaten Schlüssel mit Hüpfburg für C# erstellt:Entschlüsseln Passwort geschützt PEM enthält privaten Schlüssel
public string GetPrivateKey(AsymmetricCipherKeyPair keyPair, string password)
{
var generator = new Pkcs8Generator(keyPair.Private, Pkcs8Generator.PbeSha1_3DES);
generator.IterationCount = 4;
generator.Password = password.ToCharArray();
var pem = generator.Generate();
TextWriter textWriter = new StringWriter();
PemWriter pemWriter = new PemWriter(textWriter);
pemWriter.WriteObject(pem);
pemWriter.Writer.Flush();
string privateKey = textWriter.ToString();
return privateKey;
}
die wie folgt aussieht:
-----BEGIN ENCRYPTED PRIVATE KEY-----
...
-----END ENCRYPTED PRIVATE KEY-----
Was ich don‘ Ich weiß, wie man das Passwort verwendet, das zum Verschlüsseln des privaten Schlüssels in meiner Decrypt-Methode verwendet wird. Gerade jetzt, ohne zu wissen, wie man „entschlüsseln“ meine privaten Schlüssel er password
, ich die folgende Ausnahme erhalten:
Org.BouncyCastle.OpenSsl.PemException: Problem VERSCHLüSSELT Erzeugen der private Schlüssel: System.NullReferenceException: Objektverweis nicht auf eine Instanz eines Objekts festgelegt. bei Org.BouncyCastle.OpenSsl.PemReader.ReadPrivateKey (PemObject pemObject)
Hier ist der Code für die Methode Decrypt:
public string Decrypt(string base64Input, string privateKey, string password)
{
var bytesToDecrypt = Convert.FromBase64String(base64Input);
//get a stream from the string
AsymmetricCipherKeyPair keyPair;
var decryptEngine = new Pkcs1Encoding(new RsaEngine());
using (var txtreader = new StringReader(privateKey))
{
var obj = new PemReader(txtreader).ReadObject();
keyPair = (AsymmetricCipherKeyPair) obj;
decryptEngine.Init(false, keyPair.Private);
}
var decrypted = Encoding.UTF8.GetString(decryptEngine.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length));
return decrypted;
}
Ich habe einige Tags hinzugefügt und den Titel geändert (etwas präziser, indem ich die Laufzeiteigenschaften in den Fragetext verschoben habe). Ich habe keine BC-Implementierung online gefunden, also hoffe ich, dass dies etwas Aufmerksamkeit erregt - rechtzeitig :) –