#c# #openssl #rsa #sslstream
#c# #openssl ( опенссл ) #rsa #sslstream #openssl
Вопрос:
я использую 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;
Но, тестируя это с оригинальным клиентом, который я буду использовать, обмен ключами происходит по-другому.
Есть ли другой способ обмена ключами? Потому что я уверен, что исходная машина использует другой способ обмена этими ключами с моим сервером.
Комментарии:
1. Что вы подразумеваете под «… обмен ключами происходит по-другому»? При каждом запуске протокола используются разные значения для случайного клиента (одноразовый номер) и случайного сервера (одноразовый номер). Это встроено в протокол. Вы не должны иметь возможность дублировать значения при выполнении.
2. способ, которым я отправляю с 2 обычными машинами, использует sslstream, просто используя модуль, но я заметил, что исходная машина работает не так