RSACryptoServiceProvider

RSACryptoServiceProvider

我正在尝试使用公钥加密与客户端和服务器进行通信。服务器应该生成一个1024位的公共(public) key ,并将其发送给客户端,客户端将使用该 key 将加密的数据发送回服务器。到目前为止,我已经使用以下方法初始化了RSACryptoServiceProvider:

RSACryptoServiceProvider rsaEncryption = new RSACryptoServiceProvider(1024);

现在,我知道可以使用ExportParameters从RSACryptoServiceProvider获取指数和模数。但是,我想知道,如何使用此数据将公钥发送回客户端(也将使用RSACryptoServiceProvider),以及客户端如何使用此数据加密要发送回给我的东西?
还是我这样做完全错误?

最佳答案

您的逻辑似乎还不错,而且似乎只需要一些示例代码。

    using System;
    using System.Security.Cryptography;
    using System.Text;

    namespace RSA
    {
        class Program
        {
            static void Main(string[] args)
            {
                try
                {
                    var rsaServer = new RSACryptoServiceProvider(1024);
                    var publicKeyXml = rsaServer.ToXmlString(false);

                    var rsaClient = new RSACryptoServiceProvider(1024);
                    rsaClient.FromXmlString(publicKeyXml);

                    var data = Encoding.UTF8.GetBytes("Data To Be Encrypted");

                    var encryptedData = rsaClient.Encrypt(data, false);
                    var decryptedData = rsaServer.Decrypt(encryptedData, false);

                    Console.WriteLine(Encoding.UTF8.GetString(decryptedData));

                    Console.WriteLine("OK");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.Read();
            }
        }
    }

关于c# - 从RSACryptoServiceProvider获取公钥?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14047532/

10-11 13:29