1

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

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 的攻击,但我正面临着艰难的学校截止日期,这是我需要克服的障碍,然后才能继续前进。

任何帮助,将不胜感激。提前致谢。

4

2 回答 2

5

我会继续做这个答案,然后:

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

您不必保护公钥。是公开的

于 2013-03-28T12:51:14.310 回答
3

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

byte[] clientPublicKey = ...
var provider = new RSACryptoServiceProvider();
provider.ImportCspBlob(clientPublicKey);
var parameters = provider.ExportParameters(false);
于 2013-03-26T21:11:30.913 回答