以前これについて質問したのですが、適切な回答が得られず、何も解決しませんでした。
そこで、問題の詳細をいくつか明らかにしましたので、どうすればこの問題を解決できるか、何を試すべきかについて、皆さんの意見をぜひ聞かせてください。
私の Linux サーバーにはJava 1.6.0.12がインストールされており、以下のコードは完璧に実行されます。
String key = "av45k1pfb024xa3bl359vsb4esortvks74sksr5oy4s5serondry84jsrryuhsr5ys49y5seri5shrdliheuirdygliurguiy5ru";
try {
Cipher c = Cipher.getInstance("ARCFOUR");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "ARCFOUR");
c.init(Cipher.DECRYPT_MODE, secretKeySpec);
return new String(c.doFinal(Hex.decodeHex(data.toCharArray())), "UTF-8");
} catch (InvalidKeyException e) {
throw new CryptoException(e);
}
今日、サーバー ユーザーにJava 1.6.0.26をインストールしましたが、アプリケーションを実行しようとすると、次の例外が発生します。最初のバージョンでは動作するものの、それ以降のバージョンでは動作しないため、Java インストール構成に関係しているのではないかと思います。
Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.a(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
at javax.crypto.Cipher.init(DashoA13*..) ~[na:1.6]
at my.package.Something.decode(RC4Decoder.java:25) ~[my.package.jar:na]
... 5 common frames omitted
25行目は次のとおりです。c.init(Cipher.DECRYPT_MODE, secretKeySpec);
注:
* サーバーの1.6.0.12 java ディレクトリの java.security は、 1.6.0.26 java.security ファイルとほぼ完全に一致しています。最初のファイルには追加のプロバイダーはありません。
* 前の質問はここ。
ベストアンサー1
おそらく、現在無制限強度のファイルがインストールされていません。
次のファイルをダウンロードする必要がある場合があります:
Java 暗号化拡張機能 (JCE) 無制限強度管轄ポリシー ファイル 6
Java 暗号化拡張機能 (JCE) 無制限強度管轄ポリシー ファイル 7 のダウンロード
Java 暗号化拡張機能 (JCE) 無制限強度管轄ポリシー ファイル 8 のダウンロード(Java 8 u162 より前のバージョンでのみ必要)
zip から jar ファイルを抽出し、 に保存します${java.home}/jre/lib/security/
。