我正在編寫一個使用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密鑰在外觀上的差異如此之大,以及我需要如何解決此問題?
預先感謝您!