2016-11-10 1 views
0

공개 키로로드하고 다른 사람이 제공 한 공개 키로 바이트 [] 배열을 암호화 할 수있는 코드를 얻었습니다. 그러나 파일의 암호를 해독하면 .csv 확장자가 없습니다. Excel에서 열 수는 있지만 일단 열면 CSV처럼 보이지만 파일에는 연결된 확장명이 없으므로 Excel에서 이상하게 열어야합니다.BouncyCastle openPGP가 바이트 [] 배열을 CSV 파일로 암호화합니다.

enter image description here

또한 아래에있는 내 코드를 첨부했습니다 난 그냥 내가 클레오 파트라를 사용하여 암호를 해독 할 때, 그것은을 .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(); 

답변

0

신경 끄시 고, 난 그냥 ... eData.csv.gpg에 파일 확장명을 변경하기 위해 필요한이 전체 이일 나에게했다

관련 문제