2017-12-26 31 views
0

암호로 보호 된 PFX 파일에서 개인 키를 가져 오려고 시도하고 추출 된 개인 키를 사용하여 암호 해독을 수행합니다. 다음 코드를 입력했는데 NullPointerException. 지난 1 주부터이 붙어 출력이PFX 파일에서 개인 키 읽기, 해당 개인 키로 암호문 암호 해독

Security.addProvider(new BouncyCastleProvider()); 
    PEMParser pemParser = new PEMParser(new InputStreamReader(new FileInputStream("..//pfx//pfx//BC_6.pfx"))); 
    PEMEncryptedKeyPair encryptedKeyPair = (PEMEncryptedKeyPair) pemParser.readObject(); 
    PEMDecryptorProvider decryptorProvider = new JcePEMDecryptorProviderBuilder().build("test123".toCharArray()); 
    PEMKeyPair pemKeyPair = encryptedKeyPair.decryptKeyPair(decryptorProvider); 

    JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC"); 
    System.out.println(" Private Key ---> "+converter.getPrivateKey(pemKeyPair.getPrivateKeyInfo())); 

,

Exception in thread "main" java.lang.NullPointerException 
at com.test.obfuscate.EncryptionUtil.main(EncryptionUtil.java:40) 

이에 제안하십시오. StackOverflow에서 다른 게시물을 보았습니다.

+0

어느 라인이 당신이 얻을 NPE에 대한 책임이있다 (작은 오타/구문 오류를 신경 쓰지 마십시오 내 머리에서 입력)? –

+0

"PEMKeyPair에서 NPE 가져 오기 pemKeyPair = encryptedKeyPair.decryptKeyPair (decryptorProvider);" line – mahi

+1

PFX라고하는 PKCS12 파일은 ** PEM 형식이 아닙니다 ** (보시다시피) ** 일부 PEM 형식을 처리하는 BC 루틴에서는 읽을 수 없습니다. 그러나 표준 Java (JCE)와 BC _can_는 PKCS12를 _keystore_로 처리합니다. 'KeyStore.getInstance ("PKCS12"[, provider])를 호출 해, 생성 된 오브젝트를 사용해 PFX 파일을로드 한 다음, 오브젝트로부터 키를 취득합니다. 모두, 「KeyStore」의 javadoc로 설명되고 있습니다. –

답변

0
(PEMEncryptedKeyPair) pemParser.readObject() 

반환 null 따라서

encryptedKeyPairnull 그리고 당신은 메서드를 호출 할 수 없습니다. 다음 중 하나 이상을 수행해야합니다 : 올바르게 값을 읽을 수 있는지 확인

  • 를, 그래서 그것이 null
  • try 다른 경우 null
  • 는 객체의 메소드를 호출하지 않습니다 - catch 처리 할 수있는 예외
+0

null이 반환 된 것을 어떻게 알 수 있습니까? 아마도 다음 문은 null을 반환했습니다. 또한 귀하의 대답은 매우 일반적입니다. –

0

PEMParser pemParser = new PEMParser(new InputStreamReader(new FileInputStream("..//pfx//pfx//BC_6.pfx")));

당신이하려고하는 PFX 파일을 PEM 파일로 읽으십시오 ?? PFX 파일은 PKCS12 keystore입니다.

그래서

InputStream in = ... 
KeyStore ks = KeyStore.getInstance("PKCS12"); 
ks.load(in);