공개 키로로드하고 다른 사람이 제공 한 공개 키로 바이트 [] 배열을 암호화 할 수있는 코드를 얻었습니다. 그러나 파일의 암호를 해독하면 .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();