我可以创建服务器和客户端的非对称密钥,然后导出它们并尝试交换它们。我的问题,我无法找到解决方案,是我想将服务器的公钥导入客户端程序。它以byte []形式出现,但我需要能够将其用作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的影响,但是我正面临一个艰难的学校最后期限,这是一个砖墙,我需要在我继续前进任何进一步的。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:4)
我会继续做下面的答案,然后:
我从未做过blob,但我通常使用RSACryptoServiceProvider.ToXMLString()
导出到XML。然后我将XML放在我的应用程序的资源中,然后再使用RSACryptoServiceProvider.FromXMLString()
加载关键参数。
您无需保护公钥。这是公开的
答案 1 :(得分:3)
要将byte []公钥转换为RSAParameters,您可以使用相同的类 RSACryptoServiceProvider ;
byte[] clientPublicKey = ...
var provider = new RSACryptoServiceProvider();
provider.ImportCspBlob(clientPublicKey);
var parameters = provider.ExportParameters(false);