私は自分のコードを公開鍵で読み込み、他の誰かが提供した公開鍵でバイト[]配列を暗号化できるようにしました。しかし、私はファイルを解読すると、.csv拡張子を持っていません。私はExcelで開くことができますし、一度開くとcsvのように見えますが、そのファイルには関連する拡張子がありませんので、Excelで奇妙に開く必要があります。BouncyCastle openPGPはバイト[]配列をCSVファイルとして暗号化します
また、私は以下の私のコードを添付しましたし、私はちょうど私がクレオパトラを使用して、それを復号化するとき、それは.csv拡張子で表示されるようにそれを変更する場所を見つけ出すことができませんでした。 .gpgファイルから出力ストリームを.csvに変更しようとしましたが、OpenPGP署名かどうかを判断できないというエラーが表示されます。私はlData.open()メソッドで何かをする必要があると思うが、私がそこに置くことができる唯一のオプションはPGPLiteralData.TEXT、BINARY、UTF8である。これは、ファイルに署名を追加することと関係しているのでしょうか?
Btw以下のコードでは、公開鍵はすでにpubkeyという変数にロードされています。
byte[] bytesArray = getAccessChannels(customerAlias);
OutputStream out = new FileOutputStream("/path/to/file/eData.gpg");
Security.addProvider(new BouncyCastleProvider());
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(PGPCompressedDataGenerator.ZIP);
OutputStream cos = comData.open(bOut); // open it with the final destination
PGPLiteralDataGenerator lData = new PGPLiteralDataGenerator();
OutputStream pOut = lData.open(cos, PGPLiteralData.TEXT, "Report.csv", bytesArray.length, new Date());
pOut.write(bytesArray);
lData.close();
comData.close();
PGPEncryptedDataGenerator cPk = new PGPEncryptedDataGenerator(new BcPGPDataEncryptorBuilder(SymmetricKeyAlgorithmTags.AES_256).setSecureRandom(new SecureRandom()));
cPk.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(pubKey));
byte[] bytes = bOut.toByteArray();
OutputStream cOut = cPk.open(out, bytes.length);
cOut.write(bytes); // obtain the actual bytes from the compressed stream
cOut.close();