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);