2009-05-21 3 views
2

私はRSACryptoServiceProviderを使用しています私は公開鍵と秘密鍵を生成しました。それによって生成されたキーは、次の形式である:問題がpgpキーを生成していますか?

公開鍵:

<RSAKeyValue> 
    <Modulus>m9bAoh2...eGNKYs=</Modulus> 
    <Exponent>AQAB</Exponent> 
</RSAKeyValue> 

プライベートキー:

<RSAKeyValue> 
    <Modulus>m9bAo...ZAIeGNKYs=</Modulus> 
    <Exponent>AQAB</Exponent> 
    <P>xGj/UcXs...R1lmeVQ==</P> 
    <Q>yx6e18aP...GXzXIXw==</Q> 
    <DP>NyxvnJ...1xAsEyQ==</DP> 
    <DQ>La17Jycd...FhApEqwznQ==</DQ> 
    <InverseQ>JrG7WCT...Hp3OWA==</InverseQ> 
    <D>RdWsOFn....KL699Vh6HK0=</D> 
</RSAKeyValue> 

が、PGP Desktopを使用して、私はこのようなキーを生成した -

公開鍵:

mQCNBEoOlp8BBACi/3EvBZ83ZduvG6YHu5F0P7Z3xOnpIsaPvTk0q+dnjwDUa5sU 
lEFbUZgDXSz7ZRhyiNqUOy+IG3ghPxpiKGBtldVpi33qaFCCEBiqsxRRpVCLgTUK 
HP2kH5ysrlFWkxTo 
=a4t9 

プライベートキー:

lQHgBEoOlp8BBACi/3EvBZ83ZduvG6YHu5F0P7Z3xOnpIsaPvTk0q+dnjwDUa5sU 
lEFbUZgDXSz7ZRhyiNqUOy+IG3ghPxpiKGBtldVpi33qaFCCEBiqsxRRpVCLgTUK 
waBnEitQti3XgUUEZnz/rnXcQVM0QFBe6H5x8fMDUw== 
=CVPD 

私はPGP Desktopで生成した鍵を渡しているときに、完全に暗号化と復号化を行うことができますが、イムは、RSACryptoServiceProviderによって生成されたキーを渡すとき、私は暗号化することはできませんよと解読?

誰でもPGPによって生成されたパターンで鍵を生成する方法を教えてください。

+0

バックラブ:https://security.stackexchange.com/q/1750/2379 – Pacerier

答えて

5

RSAとPGPは異なります。

本質的に求めているのは、ガソリン車をディーゼル車で走らせる方法です。答えはできません。


PGPコマンドラインを調べると、コマンドラインからPGPコマンドを実行できます。

8

これは、bouncycastle C#ライブラリを使用して、これはどのように私はキーのペアを生成します。



public void GenerateKey(string username, string password, string keyStoreUrl) 
     { 
      IAsymmetricCipherKeyPairGenerator kpg = new RsaKeyPairGenerator(); 
      kpg.Init(new RsaKeyGenerationParameters(BigInteger.ValueOf(0x13), new SecureRandom(), 1024, 8)); 
      AsymmetricCipherKeyPair kp = kpg.GenerateKeyPair(); 

      FileStream out1 = new FileInfo(string.Format("{0}secret.asc", keyStoreUrl)).OpenWrite(); 
      FileStream out2 = new FileInfo(string.Format("{0}pub.asc", keyStoreUrl)).OpenWrite(); 

      ExportKeyPair(out1, out2, kp.Public, kp.Private, username, password.ToCharArray(), true); 

     } 

private static void ExportKeyPair(
      Stream secretOut, 
      Stream publicOut, 
      AsymmetricKeyParameter publicKey, 
      AsymmetricKeyParameter privateKey, 
      string identity, 
      char[] passPhrase, 
      bool armor) 
     { 
      if (armor) 
      { 
       secretOut = new ArmoredOutputStream(secretOut); 
      } 

      PgpSecretKey secretKey = new PgpSecretKey(
       PgpSignature.DefaultCertification, 
       PublicKeyAlgorithmTag.RsaGeneral, 
       publicKey, 
       privateKey, 
       DateTime.Now, 
       identity, 
       SymmetricKeyAlgorithmTag.Cast5, 
       passPhrase, 
       null, 
       null, 
       new SecureRandom() 
       //    ,"BC" 
       ); 

      secretKey.Encode(secretOut); 

      secretOut.Close(); 

      if (armor) 
      { 
       publicOut = new ArmoredOutputStream(publicOut); 
      } 

      PgpPublicKey key = secretKey.PublicKey; 

      key.Encode(publicOut); 

      publicOut.Close(); 
     } 

であり、秘密鍵と公開鍵は以下のような装甲ASCII形式で生成されます。

 
-----BEGIN PGP PUBLIC KEY BLOCK----- 
Version: BCPG v1.32 

mIsEShU7ywEEAKtxKTtGTyUaVxFuWBpziA2l7qDKhe6jznre3DMPuzDnN4Ax573a 
7s/bPOkzkK9tEUGFw+BW6F4DkKydv8SQfSN5Vvc0RFMha8X1E8jki1oXTIPA8bKK 
dg8ZewZt8+Zwpt5IPAkIydmxDhMjwd71ay3p1ypOfROFPOfc2dBPx/0JAAUTtAdo 
YW1zbWFuiJwEEAECAAYFAkoVdAsACgkQEz/ESPB1tojuIQP8CjAzJx8PoIN33pxQ 
AfGF+fMCZx8/m7dDBE113aiio25BCvNKOpFwye2UK4ioKN70k24pzkyi8AZO22/s 
u6GL7XEiiBZLPynBxJR4A7PzvD3KNqdQUqesu9IkPFyXz3UFH3clR0hnZtZtgnbk 
L9dvj5RYVuGiS3Dcf1zoLMOiCdc= 
=dFfG 
-----END PGP PUBLIC KEY BLOCK----- 
1

良い方法のためのおかげで、かなり長い間以来、彼らのためにウェブを中心にfaffingた、

一部訂正カントー...

ExportKeyPair(out1, out2, kp.Public, kp.Private, username, password.ToCharArray(), true); 

への呼び出しの後電話してください

out1.Close(); 
out2.Close(); 

上記のルーチンから生成された秘密鍵のサンプル

-----BEGIN PGP PRIVATE KEY BLOCK----- 
Version: BCPG C# v1.6.1.0 

lQHqBEvhYOcBBACa5HjZ14ULRvZLKj+rwscQh63Zd9rnfZmVKN5fNsK+ocxxV8rc 
TWa6P3knIWCra1lqZ1onNtM8tL1XRuK9pagu7XPjjHUR37ajYv/e0/w9IHlOBtM4 
1T3oMM48FBH5WGZswOQnTCHoHpZilx7zeJgcyoUayM9uaWGWVLb6PqAE2QAFE/8D 
AwL4BEE4Y+mD6GB0ctnbN4tZuctydODYJUNOK3p+UdgEh5rj5nOelB5h3kqFWdwq 
8F3EBxB4guRnLOxIeSjzvFoFpqb4QSrM4brdisaHoK0qgrsyCaQhdepVlz662hSD 
5bxJPQqmJ4c9X7x6tTMwDAseoz+VUK9U91iN9jv72hp2dXJYjJvBbkTX9euz2i4P 
HrlLV2DuOeGWipsb+sIOuYqpZoK5aMq5AAGTTmmApYam/+0d2lXTt+Cw0FkoN1U+ 
CWriVFE+x58/MmpqKttlrHyp/c7aRmdxeKheY7QAnKPmTRFZAu6HR/DnLSya6+Qz 
MqsYBZAocDs7Bg9U6N79Ynl7mkChoVR4ZwJE/OXgHDRSYlcBwT++frHI06cn1l8t 
f0CWU/Z6EuYj/rmgL/v5ln7EQ2H+SRypPxYJKK8dTcu2uk5Ev1x4EOQ2nF1BxBB1 
CceSVEimc2TDcVj0K7QIc3BhcmVraDOInAQQAQIABgUCS+FS1wAKCRBHXl7hbFhY 
BLInA/9TPwmivxofs7/y4xmrl0X+Ruish0l+KC45/MQGU1bT2MYCR5jefyaUIHMK 
gH8bX4DHobBFxtkTXoTgpZmm5JNHGiSQoOXqW7iqHOkp6q6rkwV9BYvfsbjMsfAB 
bV7l29CMoMDj1qB3k9CJDP4MuorEI5Qx30x07Mm2+uwcYC2+Ag== 
=jh9t 
-----END PGP PRIVATE KEY BLOCK----- 

上記の方法でもう一度もう一度感謝します。

-----BEGIN PGP PUBLIC KEY BLOCK----- 
Version: BCPG C# v1.6.1.0 

mIsES+Fg5wEEAJrkeNnXhQtG9ksqP6vCxxCHrdl32ud9mZUo3l82wr6hzHFXytxN 
Zro/eSchYKtrWWpnWic20zy0vVdG4r2lqC7tc+OMdRHftqNi/97T/D0geU4G0zjV 
PegwzjwUEflYZmzA5CdMIegelmKXHvN4mBzKhRrIz25pYZZUtvo+oATZAAUTtAhz 
cGFyZWtoM4icBBABAgAGBQJL4VLXAAoJEEdeXuFsWFgEsicD/1M/CaK/Gh+zv/Lj 
GauXRf5G6KyHSX4oLjn8xAZTVtPYxgJHmN5/JpQgcwqAfxtfgMehsEXG2RNehOCl 
mabkk0caJJCg5epbuKoc6SnqrquTBX0Fi9+xuMyx8AFtXuXb0IygwOPWoHeT0IkM 
/gy6isQjlDHfTHTsybb67BxgLb4C 
=ZyOZ 
-----END PGP PUBLIC KEY BLOCK----- 
関連する問題