2017-03-28 10 views
0

SecretKeyFactoryを使用して秘密鍵をパスワードで生成しようとしています。プログラムを起動するときに、アルゴリズムが使用できないというランタイム例外があります。しかし、他のPCではうまく動作します!どんな助け?Java SecretKeyFactory not available

private static void generatePrivateKey(String pwd) { 

    try { 
     PBEKeySpec keySpec = new PBEKeySpec(pwd.toCharArray()); 
     SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWithHmacSHA256AndAES_128"); 
     PRIVATE_KEY = kf.generateSecret(keySpec); 
    } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { 
     e.printStackTrace(); 
    } 
} 

ランタイム例外: enter image description here

+1

他のPCにPBEWithHmacSHA256AndAES_128がある特定のJREを知っていますか?現在、JRE 1.8.0_121を使用していますが、その環境ではサポートされていない可能性があります。利用可能なアルゴリズムを一覧表示するには、このhttp://stackoverflow.com/questions/9333504/how-can-i-list-the-available-cipher-algorithmsを試してください –

+0

はい、他のPCにはJRE 1.8.0_121があり、それは非常にうまく動作します – Dariko77

答えて

0

複数の可能性があります。

  1. は、JREは、追加の暗号化プロバイダがインストールされてい
  2. 変更されていても良いです。 ScretKeyFactoryの作成でプロバイダを指定しないので、どのプロバイダが使用されているのか分かりません。 Oracle JREでは、必要なアルゴリズムがSunJCEによって提供されます。したがって、次のように動作するはずです:SecretKeyFactory.getInstance("PBEWithHmacSHA256AndAES_128", "SunJCE");
+0

このようにして、別の実行時例外が発生します。「java.security.NoSuchProviderException:そのようなプロバイダはありません:SunJCE」 – Dariko77

+0

JREは非標準であるか、操作されています。それを削除し、現行バージョンをOracleからロードします。 – Robert

+0

私もそれをして、問題は残っています。私は最後のJava 8のverionをインストールする – Dariko77

関連する問題