如何在c#中导入公钥

本文关键字:导入 公钥 | 更新日期: 2023-09-27 18:06:12

我可以创建服务器和客户端的非对称密钥,然后导出它们并尝试交换它们。我的问题,我还没有能够找到一个解决方案,是我想要导入服务器的公钥到客户端程序。它以字节[]的形式出现,但我需要能够将其用作rsarapameters,以便能够加密数据以发送到服务器。如何将byte[]转换为rrsaparameters类型?

private void secureButton_Click(object sender, EventArgs e)
        {
            clientRSA = new RSACryptoServiceProvider();
            byte[] clientPublicKey = clientRSA.ExportCspBlob(false);
            stm.Write(clientPublicKey, 0, clientPublicKey.Length);
            stm.Read(serverPublicKey, 0, serverPublicKey.Length);
        }

我知道这不是一种"安全"的方式,因为很容易受到MITM的攻击,但我正面临着一个艰难的学校截止日期,这是我在进一步进行之前需要克服的障碍。

任何帮助都会很感激。

如何在c#中导入公钥

我将把这个作为答案,然后:

我从来没有做过blob,但我通常做的是使用RSACryptoServiceProvider.ToXMLString()导出为XML。然后,我把XML放在我的应用程序中的资源中,然后在将来使用RSACryptoServiceProvider.FromXMLString()来加载关键参数。

你不需要保护公钥。这是公共

要将byte[]公钥转换为rsparameters,您可以使用相同的类RSACryptoServiceProvider;

byte[] clientPublicKey = ...
var provider = new RSACryptoServiceProvider();
provider.ImportCspBlob(clientPublicKey);
var parameters = provider.ExportParameters(false);