我正在使用 SSLStream 与使用 OpenSSL 证书的客户端和服务器进行通信。
我将使用的客户端是一台拥有自己软件的机器,需要使用 RSA 加密。
我做了一个服务器和一个客户端,只是为了测试,使用我的计算机作为客户端,另一台计算机作为服务器,我做了一个简单的密钥交换,只是为了测试这些机器之间的 sslstream 和 de rsa 密码。
两台机器都像这样发送公钥:
byte[] modulus = pubkey.Modulus;
sslStream.Write(modulus, 0, modulus.Length);
sslStream.Flush();
两台机器都收到密钥并像这样创建:
byte[] exponent = {1, 0, 1};
byte[] modulus = new byte[256];
sslStream.Read(modulus, 0, modulus.Length);
clientPublicKey.D = null;
clientPublicKey.DP = null;
clientPublicKey.DQ = null;
clientPublicKey.Exponent = exponent;
clientPublicKey.InverseQ = null;
clientPublicKey.Modulus = modulus;
clientPublicKey.P = null;
clientPublicKey.Q = null;
但是,用我将使用的原始客户端进行测试,密钥交换的方式不同。
有没有其他方式交换密钥?因为我确信原始机器使用另一种方式与我的服务器交换这些密钥。