Некоторые примеры вашего кода очень помогли бы понять, что происходит.На данный момент я могу только предположить, что вы пытаетесь декодировать ваше сообщение с открытым ключом, а не с закрытым.
Во-первых, у вас должно быть два парных ключа:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
string publicKey = rsa.ToXmlString(false);
string privateKey = rsa.ToXmlString(true);
Во-вторыхВы должны предоставить свой открытый ключ всем людям, которые хотят отправить вам секретное сообщение:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(publicKey);
string secretMessage = Convert.ToBase64String(rsa.Encrypt(Encoding.UTF8.GetBytes(openMessage), false));
И, наконец, когда вы получаете секретное сообщение, вы можете расшифровать его, потому что только у вас есть личноеключ, который связан с открытым:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(privateKey);
string revealedMessage = Encoding.UTF8.GetString(rsa.Decrypt(Convert.FromBase64String(secretMessage), false));