Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中导入公钥?_C#_Client Server_Rsa - Fatal编程技术网

C# 如何在C中导入公钥?

C# 如何在C中导入公钥?,c#,client-server,rsa,C#,Client Server,Rsa,我可以创建服务器和客户端的非对称密钥,然后导出它们并尝试交换它们。我的问题是,我想将服务器的公钥导入客户机程序,但我还没有找到解决方案。它以字节[]的形式出现,但我需要能够使用它作为参数,以便能够加密数据以发送到服务器。如何将字节[]转换为参数类型 private void secureButton_Click(object sender, EventArgs e) { clientRSA = new RSACryptoServiceProvider();

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

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的影响,但我正面临一个艰难的学校最后期限,这是一个砖墙,在我可以继续之前,我需要通过它


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

要将byte[]公钥转换为RSAPERAMETERS参数,您可以使用相同的类RSACryptServiceProvider


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


我会继续回答这个问题,然后:


我从未做过blob,但我通常做的是使用rsacryptServiceProvider.ToXMLString导出到XML。然后,我将该XML放入我的应用程序的资源中,然后在将来使用rsacryptserviceprovider.FromXMLString将关键参数重新加载


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

我会继续回答,然后:


我从未做过blob,但我通常做的是使用rsacryptServiceProvider.ToXMLString导出到XML。然后,我将该XML放入我的应用程序的资源中,然后在将来使用rsacryptserviceprovider.FromXMLString将关键参数重新加载


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

我从未做过blob,但我通常使用rsacryptserviceprovider.ToXMLString导出为XML。然后,我将该XML放入我的应用程序的资源中,然后在将来使用rsacryptserviceprovider.FromXMLString将这些参数重新加载。您没有安全的公钥。这是公开的。谢谢,皮特,这很有效,让我如愿以偿。第一次使用rsacyptoserviceprovider,非常感谢您的帮助。我从未做过blob,但我通常会使用rsacyptoserviceprovider.ToXMLString导出到XML。然后,我将该XML放入我的应用程序的资源中,然后在将来使用rsacryptserviceprovider.FromXMLString将这些参数重新加载。您没有安全的公钥。这是公开的。谢谢,皮特,这很有效,让我如愿以偿。第一次与RSACryptoServiceProvider发生冲突,因此感谢您的帮助。我收到错误:System.Security.Cryptography.CryptographException:“提供程序的错误版本”。我收到错误:System.Security.Cryptography.CryptographException:“提供程序的错误版本。”
byte[] clientPublicKey = ...
var provider = new RSACryptoServiceProvider();
provider.ImportCspBlob(clientPublicKey);
var parameters = provider.ExportParameters(false);