Я задал вопрос об этом раньше, но он не получил правильного ответа и никуда не привел.
Итак, я уточнил несколько подробностей о проблеме, и мне бы очень хотелось услышать ваши идеи о том, как я могу исправить это или что я должен попробовать.
У меня есть Java 1.6.0.12, установленный на моем Linux-сервере, и приведенный ниже код работает отлично.
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);
Примечания:
* java.security на сервере 1.6.0.12 java-каталог почти полностью совпадает с файлом java.security 1.6.0.26. В первом нет дополнительных провайдеров.
* Предыдущий вопрос здесь.