Я пишу приложение, которое использовало PKI для защиты электронной почты, файлов и т. Д. Используя пространство имен System.Cryptography
, я создаю новую пару ключей, используя RSACryptoServiceProvider
.RSA Основные значения и модуль в общедоступных/закрытых ключах
Метод:
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>
значений внутри ключа.
Я что-то не так? Я что-то пропустил? Если я распространю этот ключ, это проблема безопасности?
Crypto - новое и захватывающее поле для меня, поэтому я ДЕЙСТВИТЕЛЬНО оценил бы любые рекомендации здесь. Я обеспокоен тем, что я напортачил - шифрование на ключевые работы и дешифрование с помощью закрытого ключа работает - мне было интересно только, как клавиши PGP/GPG различаются по внешнему виду настолько и что мне нужно сделать, чтобы исправить это?
Спасибо заранее!