2009-05-21 12 views
2

Ich verwende RSACryptoServiceProvider Ich habe öffentlichen Schlüssel und privaten Schlüssel generiert. Die Schlüssel erzeugen, indem sie sind in folgendem Format:Problem beim Generieren von PGP-Schlüsseln?

öffentlicher Schlüssel:

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

Private Schlüssel:

<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> 

aber mit PGP Desktop ich habe wie diese generierten Schlüssel -

Öffentlicher Schlüssel:

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

Private Schlüssel:

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

Also, wenn ich vorbei an die generierten Schlüssel von PGP Desktop es in der Lage ist, die Verschlüsselung und Entschlüsselung perfekt zu tun, aber wenn im Schlüssel von RSACryptoServiceProvider erzeugt vorbei Ich bin nicht in der Lage zu verschlüsseln und entschlüsseln?

Kann mir bitte jemand sagen, wie man Schlüssel in dem von PGP erzeugten Muster erzeugt?

+0

Backrub: https://security.stackexchange.com/q/1750/2379 – Pacerier

Antwort

5

RSA und PGP sind unterschiedlich.

Was Sie im Wesentlichen fragen ist, wie fahre ich mein Benzinauto mit Diesel? Die Antwort ist, dass du es nicht kannst.


Sie sollten in PGP CommandLine schauen - dies ermöglicht Ihnen, PGP-Befehle über die Befehlszeile auszuführen.

8

mit der bouncycastle C# library das ist wie ich Schlüsselpaare erzeuge.



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(); 
     } 

und es generieren private und öffentliche Schlüssel in gepanzerten ASCII-Format wie.

 
-----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

Dank für die gute Methoden, um sie um die Bahn seit geraumer Zeit wurde faffing

einige Korrektur tho ...

Nach einem Aufruf von

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

Bitte rufen Sie auch

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

Eine Probe aus der obigen Routine

erzeugten privaten Schlüssel
-----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----- 

noch einmal vielen Dank für die oben genannten Methoden.

-----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-----