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));
        }