2017-11-06 9 views
3

私はBouncyCastle PGP SDKを使用してPGP暗号化された文字列を解読しようとしています。BouncyCastle Open PGP - ストリーム47の未知のオブジェクト

私はいくつかのアプローチを試してみましたし、それぞれの場合に、私は(正確に、以下に示す位)プロセスの開始時に次のエラーを取得する:

未知のオブジェクトストリームに47

を私は持っています今まで2つのナゲットパッケージを試しました:

  • BouncyCastle.OpenPGP v.1.8.1。
  • はBouncyCastle-EXTのv1.7.0

私は2件の記事で提示アプローチしようとしている:

をそして私は、テストを取得する3つの方法を試してみましたキーと暗号化された文字列:

次のように私のコードが見える瞬間MSDNのチュートリアル(上記のリンク)

からのコードを使用して、それを生成

  • https://www.igolder.com/PGP/generate-key/
  • https://sela.io/pgp/
  • public void DecryptFile(string inputFilePath, string outputPath) 
        { 
         using (FileStream fsEncryptedFile = File.Open(inputFilePath, FileMode.Open)) 
         using (Stream decoderStream = PgpUtilities.GetDecoderStream(fsEncryptedFile)) 
         { 
          PgpObjectFactory factory = new PgpObjectFactory(decoderStream); 
          PgpObject obj = factory.NextPgpObject(); //<-- ERROR THROWN HERE 
          if (!(obj is PgpEncryptedDataList)) 
          { 
           obj = factory.NextPgpObject(); 
          } 
          PgpEncryptedDataList edl = obj as PgpEncryptedDataList; 
    
          foreach (PgpPublicKeyEncryptedData data in edl.GetEncryptedDataObjects()) 
          { 
           PgpPrivateKey privateKey = null; 
           using (FileStream fsKeyring = File.Open(this.privateKeyPath, FileMode.Open)) 
           { 
            PgpSecretKeyRingBundle bundle = new PgpSecretKeyRingBundle(fsKeyring); // <-- also same error can happen here if I skip the error above 
            PgpSecretKey secretKey = bundle.GetSecretKey(data.KeyId); 
            privateKey = secretKey.ExtractPrivateKey(this.signature.ToCharArray()); 
           } 
           PgpObjectFactory plainFactory = new PgpObjectFactory(data.GetDataStream(privateKey)); 
           PgpObject message = plainFactory.NextPgpObject(); 
           if (message is PgpCompressedData) 
           { 
            message = new PgpObjectFactory(((PgpCompressedData) message).GetDataStream()).NextPgpObject(); 
           } 
           if (message is PgpLiteralData) 
           { 
            PgpLiteralData ld = (PgpLiteralData) message; 
            using (FileStream outStream = File.Create(outputPath)) 
            { 
             Stream inStream = ld.GetInputStream(); 
             byte[] buffer = new byte[0x100000]; 
             int count = inStream.Read(buffer, 0, buffer.Length); 
             while (count > 0) 
             { 
              outStream.Write(buffer, 0, count); 
              count = inStream.Read(buffer, 0, buffer.Length); 
             } 
    
             outStream.Close(); 
            } 
           } 
           else 
           { 
            Console.WriteLine("ERROR: Unknown type of message in PGP file: {0}", message.GetType().FullName); 
           } 
          } 
         } 
        } 
    

    ここにいます私のテストキーとこんにちは世界のメッセージはhttps://www.igolder.com/PGP/generate-key/

    -----BEGIN PGP PUBLIC KEY BLOCK----- 
    Version: BCPG C# v1.6.1.0 
    
    mQENBFoAOVkBCACQs2N2Z/b6Fpx+w6Et380qVCtwxJ6GBCRAgwVLGNSKoPJ/L7Sh 
    dBYJAY5hAWWkSNRislYUG7iykK3JtJVOetlts1xFQX5gVVABZphGx9OtbGo95dUJ 
    vxV3w7cpXwHPB45skd2qjzIZLh8PY0BYC4Rf8SIa2LBhPh5CqT339Z8h0dGBhykj 
    X8LyzCVnKVjUUZpaGHoM5zo3jtIhxBgYs6WowuWaMtpEynQW753klBIW+d7UsJ2x 
    zrHu3SNE4hU5ayNvZKwx3Mb1LRf2ydqaniyLoL4nrPzeIr19vBHRfr52itjcG1hD 
    4PoD5zECwKK4KOqfPAjg/8fKa/oDZserdIxnABEBAAG0AIkBHAQQAQIABgUCWgA5 
    WQAKCRC3T9Uo2/H1P2yQCACMjLPb3z1hRErwevJtyEvaixIovVS/I/8anW9t9egr 
    yaoufqC0WPGN8nDrFXRInYeV3hV1C6qSq1BUGsOhS1aFDsjqqUdtQ1oIemAs9BnV 
    trD/noOkR11THtA2+gO3nyIo6vLADiqDQ5RQjzOMTwGVAHJjf8JpxvlIyrb/09sO 
    j1CmhcZfUPYNLV15h3XWHLk1dJhtYTjKYtH+kbS2THln/0LOCd/h9+rdmojQmtau 
    8wkgeX9vhiaGItZ+xjTb7jNTTn+fzO3IkeffgklIZbhX7/NqUKKNFUKYzHDwuS2L 
    uTgd1VhOQWfI/ZTIwmVqoCMOlYdtmrsl12tBp0JZUXJS 
    =8xO7 
    -----END PGP PUBLIC KEY BLOCK----- 
    
    -----BEGIN PGP PRIVATE KEY BLOCK----- 
    Version: BCPG C# v1.6.1.0 
    
    lQOsBFoAOVkBCACQs2N2Z/b6Fpx+w6Et380qVCtwxJ6GBCRAgwVLGNSKoPJ/L7Sh 
    dBYJAY5hAWWkSNRislYUG7iykK3JtJVOetlts1xFQX5gVVABZphGx9OtbGo95dUJ 
    vxV3w7cpXwHPB45skd2qjzIZLh8PY0BYC4Rf8SIa2LBhPh5CqT339Z8h0dGBhykj 
    X8LyzCVnKVjUUZpaGHoM5zo3jtIhxBgYs6WowuWaMtpEynQW753klBIW+d7UsJ2x 
    zrHu3SNE4hU5ayNvZKwx3Mb1LRf2ydqaniyLoL4nrPzeIr19vBHRfr52itjcG1hD 
    4PoD5zECwKK4KOqfPAjg/8fKa/oDZserdIxnABEBAAH/AwMCzc2GbYDsJQxgjinX 
    boFvk2rByvV1wYskgMUzsVvpfh76IsFcdjwavGBvYR2PbPcn7nydX8k5R6CV5U2k 
    H8bR9BjppDsEGfayq3HuKA9/riFvB2hLcoYj2aSF0VDE9iWSMQxiJapOWlCvkDbo 
    CVa5bLEPnhl+w8O8huI3VRc7cJs9tkQTQuKPk7HxVHdSOQATqhrJIqgrIlTS5OWf 
    0GE2mo5+8sNgLyAdjiRu057QAeHZ9o4SsD23cX6LdWzOvjOEQJs/qBL3BFdB1DHZ 
    Jn87kNnwxbQPRF0KeeaUSLahWsP8UENt1IkjI2ff95XGw1MbDv3ZZbv340CBgRS+ 
    A9HK4vT9MUU11dpc2HDix43RUQdNSZ+jKMYji/aJFNNEMbEwMkJMEPirt+6QzK8q 
    uAyFGsoUKtYhjsg8xFxQc8xif6D6pArjBPJKJe+YN45LIAHcyVNhK0X8TGxdrk9o 
    Z1smgSk4+dorpiTHRK3R1JcALjo1JY9bICTNs4xKcRTbs+6PVHEyTzCjh5YixSg2 
    9wmnsza1ucY8YUNLoXUdaIAgI/ggjrejv/JBCduKKRdiMRyjI4IcfQUiZZSO8Y3w 
    JElBXLfdGxaB7vLUA7uGvhDraRjFI2yq+x7FvCVuXmrIQ2xMRi8b2EVzvqWFSYWP 
    oRfceevoW/Jvmpy1KJV+TtlU2EplOjigHFtNvfdfxP57283BjJWD/qGyiPtQyLjA 
    7qOmtuQhnTSvdejv5bL0avlhNZvJYl6GoqO9ymDrelDWkSWFP6yaKiRR1e0mTbwX 
    UukQww0L8dJEYkKsy9rTFUTGq/PXRXxN/FVtNtLHEX8zGmBWUZgjpLwq+cc8CWmo 
    +vJnW5nfWSNySKv1aR0WvTTGK4hndJ3rpt1coUlrrbQAiQEcBBABAgAGBQJaADlZ 
    AAoJELdP1Sjb8fU/bJAIAIyMs9vfPWFESvB68m3IS9qLEii9VL8j/xqdb2316CvJ 
    qi5+oLRY8Y3ycOsVdEidh5XeFXULqpKrUFQaw6FLVoUOyOqpR21DWgh6YCz0GdW2 
    sP+eg6RHXVMe0Db6A7efIijq8sAOKoNDlFCPM4xPAZUAcmN/wmnG+UjKtv/T2w6P 
    UKaFxl9Q9g0tXXmHddYcuTV0mG1hOMpi0f6RtLZMeWf/Qs4J3+H36t2aiNCa1q7z 
    CSB5f2+GJoYi1n7GNNvuM1NOf5/M7ciR59+CSUhluFfv82pQoo0VQpjMcPC5LYu5 
    OB3VWE5BZ8j9lMjCZWqgIw6Vh22auyXXa0GnQllRclI= 
    =XAmm 
    -----END PGP PRIVATE KEY BLOCK----- 
    
    -----BEGIN PGP MESSAGE----- 
    Version: BCPG C# v1.6.1.0 
    
    hQEMA7dP1Sjb8fU/AQf9ERc725Bql1snAN5R/j/xbkRqtdmGPAbYkJQX/IcJYu9R 
    1txnd7Y7xH8FMj1a/QLB5migRO8O3UQ2KHiBTe/+QyeB+FiJVtaRndG/VDXUHATy 
    PRnusYszaYVA8YBAirDqjuuGqhIXym4v9jbyBJWYXNJnrJOPK+C7A6JQEKbQjdwX 
    vFj07faEDpn8RE6PnvU55EqcBH7D7uSMMKElknHUfyMyLrHOkrYky3uHKG/hF4QS 
    XE8jBcpNHBg5p35KH99eJafulhvt0XhGcKS1z41ftFNzGxcLLoxHWNZEGj2RG54h 
    m+5iWY0Ypqg4aTMm/SxWj41pBcc5B4deW8pO6cxC0Mkpjc/4FRl2/ZmnHr4BGIft 
    atuzKN21w4fIPkaNkz1NgfYbJs4Y/lnWjrg= 
    =wxc0 
    -----END PGP MESSAGE----- 
    

    なぜこのエラーが発生するのですか。

    おかげ

+0

パブリックフォーラムに公開鍵と秘密鍵を投稿することはお勧めしません –

+1

@AshishAgarwal - LOL、もちろんこれらはダミー生成鍵ですが、何も使用されていません!私は正直に誰かがこれらが実際の鍵かもしれないと思うことを期待していない、あなたは本当に私をひっくり返した:) – Bartosz

答えて

1

私はPgpPublicKeyRingBundle関数を呼び出したとき、私は、Visual Studio 2015と弾む城のライブラリを使用してこの問題を抱えていました。私はVisual Studioのテキストファイルを使用してPublicKey.ascとPrivateKey.ascテキストファイルを作成していた47

ストリームで

未知の物体。

デフォルトでは、VSはUnicode UTF-8エンコーディングを使用します。

これをUS-ASCIIに変更する必要があります。あなたは「エンコーディングで保存」を選択することができますドロップダウンメニューがあるだろう「保存」ボタンを

  • として>保存
  • 選択US-ASCII
  • - メニュー[ファイル]から

    関連する問題