我正在尝试使用公钥加密来与客户端和服务器进行通信.服务器应生成1024位公钥并将其发送到客户端,客户端将使用该密钥将加密数据发送回服务器.到目前为止,我用这个初始化了RSACryptoServiceProvider:
RSACryptoServiceProvider rsaEncryption = new RSACryptoServiceProvider(1024);
Run Code Online (Sandbox Code Playgroud)
现在,我知道我可以用来ExportParameters从RSACryptoServiceProvider获取指数和模数.但是,我想知道,我如何使用这些数据将公钥发送回客户端(也将使用RSACryptoServiceProvider),以及客户端如何使用此数据加密某些内容以发回给我?或者我这样做完全错了?
Meh*_*taş 19
你的逻辑似乎没问题,似乎你只需要一些示例代码.
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)