2017-03-22 1 views
1

내가 사용하는 리눅스의 텍스트 파일 암호화 한 해요 :GnuPG로 AES256 암호화 파일을 Java에서 해독하는 방법은 무엇입니까?

gpg --cipher-algo AES256 -c file.txt 

암호를 요청 명령, 이제 우리는 여기에 "123"을 입력 가정 해 봅시다.

gpg -d file.txt.gpg 

가 지금은 자바에이 파일의 암호를 해독하는 데 좋아하지만, 꽤 암호 "123"을 사용하여이 작업을 수행하는 방법을 찾을 수 없습니다 :

이 파일은 하찮게 암호를 해독 할 수 있습니다. 특히 소금과 초기 벡터가 무엇인지, 그리고 그 밖의 무엇이 필요한지는 명확하지 않습니다.

+0

는 GPG 문서를 참조/또는 코드. – zaph

답변

4

GnuPG는 Java의 원시 클래스에서 직접 지원하지 않는 OpenPGP 프로토콜을 구현합니다. OpenPGP는 own file format이지만 slightly different variant of the CFB mode도 사용합니다.

직접 구현하지 말고 Bouncy Castle library으로 가십시오. 또한, (사용 된 알고리즘 파라미터를 결정하기 위해 좀 더 많은 코드 및 압축은 링크 된 실시 예에서 제공된다)을 OutputStream out을 해독하는 것과 관련 호출 귀결 example how to decrypt a symmetrically encrypted message를 제공하고

PGPEncryptedDataGenerator encGen = new PGPEncryptedDataGenerator(
     new JcePGPDataEncryptorBuilder(algorithm).setSecureRandom(
      new SecureRandom()).setProvider("BC")); 
encGen.addMethod(
     new JcePBEKeyEncryptionMethodGenerator(passPhrase).setProvider("BC")); 
OutputStream encOut = encGen.open(out, compressedData.length); 
+1

_Oracle_ Java를 사용하는 경우 AES-256에는 무제한 강도 법령 정책이 설치되어 있어야합니다. –

+1

작동하는 것처럼 보였지만 실제로는 유효하지 않은 패딩에 대한 예외가 있습니다. 거의 72 시간 동안이 작업을 한 후에 나는 그것을 포기하기로 결정했습니다. 나는 그것이 누군가를 도울 수있는 것처럼 당신의 포스트를 upvoted,하지만 개인적으로 나를 위해 작동하지 않았기 때문에 그것을 받아 들일 수 없습니다. –

관련 문제