public string Encrypt(string plainTextMessage, IPublicKeyProvider publicKeyProvider)
        {
            var publicKey = AsymetricKeyParameterExtensions
                            .GetPublicKeyFromString(publicKeyProvider
                                                    .GetPublicKeyString(folderProvider.GetFolderName()));

            var csp = new RSACryptoServiceProvider(2048);

            csp.ImportParameters(publicKey);

            var bytesPlainText  = Encoding.Unicode.GetBytes(plainTextMessage);
            var bytesCipherText = csp.Encrypt(bytesPlainText, false);

            return(Convert.ToBase64String(bytesCipherText));
        }
        public void SaveKeyPair(AsymmetricCipherKeyPair keyPair, string folderName)
        {
            var publicKey  = AsymetricKeyParameterExtensions.GetKeyStringFromParameter(keyPair.Public);
            var privateKey = AsymetricKeyParameterExtensions.GetKeyStringFromParameter(keyPair.Private);

            var basePath = Path.Combine(AppDataFolder, $"{folderName}.data");

            Directory.CreateDirectory(basePath);

            var publicKeyPath  = Path.Combine(basePath, "public.pem");
            var privateKeyPath = Path.Combine(basePath, "private.pem");

            File.WriteAllText(publicKeyPath, publicKey);
            File.WriteAllText(privateKeyPath, privateKey);
        }