public byte[] Decrypt(byte[] encryptedData) { encryptedData.ThrowIfNull(nameof(encryptedData)); if (encryptEngine == null) { var encryptEngineTemp = new Org.BouncyCastle.Crypto.Encodings.OaepEncoding(new Org.BouncyCastle.Crypto.Engines.RsaEngine(), new Org.BouncyCastle.Crypto.Digests.Sha256Digest()); Org.BouncyCastle.OpenSsl.PemReader pr = new Org.BouncyCastle.OpenSsl.PemReader( new System.IO.StringReader(privateKey)); Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair keyParametersPrivate = (Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair)pr.ReadObject(); encryptEngineTemp.Init(false, keyParametersPrivate.Private); encryptEngine = encryptEngineTemp; } return(encryptEngine.ProcessBlock(encryptedData, 0, encryptedData.Length)); }