我正在编写一个使用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>
密钥内的值。
我做错了什么?我错过了什么吗?如果我分发这个密钥,这是一个安全问题吗?
加密是一个新的和令人兴奋的领域,所以我会真正感谢这里的任何指导。我担心我搞砸了 - 对密钥作品进行加密并使用私钥解密 - 我只是想知道PGP/GPG密钥在外观上的差异如此之大,以及我需要如何解决此问题?
预先感谢您!