RSA-шифрование в C #: какая часть определяет открытый ключ?

Я сгенерировал новую пару открытого / закрытого ключей и экспортировал ее как строку XML:

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048);  
string publicPrivateKey = RSA.ToXmlString(true);

Строка XML в publicPrivateKey выглядит так (строки сокращены для удобства чтения):

<RSAKeyValue>
   <Modulus>t6tLd1Wi7PEkwPfx9KGP1Ps/5F2saXnOsCE2U....</Modulus>
   <Exponent>AQAB</Exponent>
   <P>3LJ5y4Vla7cS3XgmbIH5dQgppUHa+aSWavEOCbDRS/M....</P>
   <Q>1QyGIAnjv4YLcRVdwXtxWkijc+aZ496qIBZnCAUUD/E....</Q>
   <DP>0821dc0f+LBKOqIEvj4+2kJrNV5ueQesFBYkEsjPFM....</DP>
   <DQ>ugSzX2oDJwjdGKG1OOiVcmUWAm6IU4PpOxcUYtY8TC....</DQ>
   <InverseQ>LDQIQu+LSB6CSZBrGxNQthWi9mkuPGVZyDDr....</InverseQ>
   <D>qZm2bXKH8WwbsJ8ZlT3S1TbgUifppLrqSRkb8XqEcMv....</D> 
</RSAKeyValue>

Сгенерированный открытый ключ должен использоваться в других приложениях (PHP / JavaScript / JAVA) для шифрования данных. Какая часть приведенного выше XML определяет открытый ключ / какую часть я должен отправить разработчикам других приложений?

И с противоположной стороны: что определяет закрытый ключ / какую часть / части я должен хранить чтобы иметь возможность расшифровать данные, зашифрованные моим открытым ключом?

9
задан ir01 15 July 2011 в 00:35
поделиться