Я пишу приложение, которое использует PKI для защиты электронной почты, файлов и т. д. Используя пространство имен System.Cryptography
, я генерирую новую пару ключей, используя RSACryptoServiceProvider
.
Метод:
public static void GenerateKeys(int keySize, out string publicKey, out string privateKey)
{
using (var provider = new RSACryptoServiceProvider(keySize))
{
publicKey = provider.ToXmlString(false);
privateKey = provider.ToXmlString(true);
}
}
keySize
= 2048.
Это приводит к такому открытому ключу, как (он был обрезан/дополнен обертками «-----START/END PUBLIC KEY BLOCK-----» для аккуратности.
-----START PUBLIC KEY BLOCK-----
<RSAKeyValue><Modulus>xs1GwyPre7/knVd3CAO1pyk++yp/qmBz2TekgrehYT
WU7hs8bUCeVQrL2OB+jm/AgjdPMohWHD/tLcJy35aZgVfPI3Oa3gmXxdoLZrfNRb
nrCm3Xr1MR7wnhMyBt5XXyU/FiF46g5qJ2DUIUg7teoKDNUSAN81JTIoH0KC+rZB
oO3tu9PR7H75K5G2eT6oUWkWKcZZU/4WNCDasNtizTe41Jy99BjrChww5r2ctqG8
LvIv7UeeFaK1vhxGKaNH/7JvKJI9LbewWNtmb/nRzQg9xK3e0OhblbW+o6zg5pTw
+n37fS7pkXK7lbRfUfaQmhoGy6ox4UWGmOgm8yPu8S4Q==</Modulus><Exponen
t>AQAB</Exponent></RSAKeyValue>
-----END PUBLIC KEY BLOCK-----`
Когда я смотрю на открытые (или закрытые) ключи на основе PGP, внутри ключа нет значений <RSAKeyValue>
, <Modulus>
или <Exponent>
.
Я делаю что-то неправильно? Я что-то пропустил? Если я распространяю этот ключ, это проблема безопасности?
Криптовалюта — новая и захватывающая область для меня, поэтому я ДЕЙСТВИТЕЛЬНО признателен за любые советы. Я обеспокоен тем, что облажался - шифрование с помощью ключа работает, а расшифровка с помощью закрытого ключа работает - мне просто интересно, почему ключи PGP/GPG так сильно различаются по внешнему виду и что мне нужно сделать, чтобы исправить это?
Заранее спасибо!