2017-12-26 53 views
0

私はパスワード保護されたPFXファイルから秘密鍵を取得しようとしており、抽出された秘密鍵の助けを借りて復号化を行っています。 NullPointerExceptionPFXファイルから秘密鍵を読み取り、その秘密鍵で暗号文を復号する

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())); 

出力は、過去1週間からこれにこだわって、これに提案して下さい、

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

です。 StackOverflowから別の投稿を試しました。

+0

あなたが得るNPEを担当するライン? –

+0

「PEMKeyPair pemKeyPair = encryptedKeyPair.decryptKeyPair(decryptorProvider);」でNPEを取得する – mahi

+1

PFX別名PKCS12ファイルは** PEM形式ではありません**(見て分かるように)、(一部の)PEM形式を処理するBCルーチンで読むことはできません。ただし、標準Java(JCE)とBC _can_の両方が_keystore_としてPKCS12を処理します。 'KeyStore.getInstance(" PKCS12 "[、provider])'を呼び出し、結果オブジェクトを使用してPFXファイルをロードし、オブジェクトからキーを取得します。 –

答えて

0
(PEMEncryptedKeyPair) pemParser.readObject() 

戻りnullは、したがって、

encryptedKeyPairnullであり、あなたがそのメソッドを呼び出すことはできません。それはnullではありませんので、あなたは正しく値を読み取ることを確認してください

  • を、それがnull
  • tryと異なる場合のみ、オブジェクトのメソッドを呼び出す:あなたは、次のいずれかまたは複数の操作を行い確認してください - 例外
+0

返されたnullはどのように知っていますか?たぶん代わりに、次のステートメントはnullを返しました。また、あなたの答えは非常に一般的です。 –

0

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

を処理するcatchあなたがしようとしていますPFXファイルをPEMファイルとして読み込みますか? PFXファイルは事実上PKCS12キーストアです。

ので(私の頭から入力し、小さなタイプミス/構文エラーを気にしないでください)

InputStream in = ... 
KeyStore ks = KeyStore.getInstance("PKCS12"); 
ks.load(in); 
関連する問題