0

次の Java コードがあります (BouncyCastle 1.48):

CMSSignedDataStreamGenerator generator = new CMSSignedDataStreamGenerator();
generator.addSignerInfoGenerator(signerInfoGenerator);
generator.addCertificates(certStore);
FileOutputStream fos = new FileOutputStream("D:\\Data\\Desktop\\Test\\singedData.txt");
OutputStream theSignedDataStream = generator.open(fos, true);

IOUtils.copy(new FileInputStream("D:\\Data\\Desktop\\Test\\unsignedData.txt"), theSignedDataStream);

現在: データは署名され、signedData.txt ファイルに書き込まれます。問題は、一部の文字が間違って書き込まれることです (データは base64 でエンコードされたコンテンツを持つ MIME コンテナーです)。以下はデータの抜粋です。

ICAgIDxOQU1FLUFERFJFU1M+CiAgICAgICAgICA8TkFNRT4KICAgICAgICAgICAg
PExpbmUtMzU+TXVzdGVya3VuZGUgUGV0ZXIgSHV???,???èiZXI8L0xpbmUtMzU+CiAgICAg
ICAgICA8L05BTUU+CiAgICAgICAgICA8U1RSRUVUPgogICAgICAgICAgICA8TGlu

どこ ???、???[EOT]、[ETX] の略です (「送信の終了」および「テキストの終了」を表す ASCII 制御文字。元のソース データには、間違った文字が表示される場所はありません: ...SHV???, ???éiZX... 本来は ...SHViZHX...

2 番目のスニペット:

Content-Transfer-Encoding: base64
Content-Type: application/pdf
Content-[EOT]‚[ETX]Description: The PDF Title

誰か助けてくれませんか?私は何を間違っていますか?

よろしく、フロリアン

4

1 に答える 1