Вопрос-ответ

Java Security: Illegal key size or default parameters?

Безопасность Java: недопустимый размер ключа или параметры по умолчанию?

Я задавал вопрос об этом ранее, но на него не получили правильного ответа и он ни к чему не привел.

Итак, я прояснил несколько деталей проблемы, и мне бы очень хотелось услышать ваши идеи о том, как я мог бы это исправить или что мне следует попробовать.

У меня на моем 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);

Примечания:
* java.security в каталоге java на сервере 1.6.0.12 почти полностью совпадает с файлом java.security 1.6.0.26. В первом нет дополнительных поставщиков.
* Предыдущий вопрос здесь.

Переведено автоматически
Ответ 1

Скорее всего, у вас сейчас не установлен файл unlimited strength.

Возможно, вам потребуется загрузить этот файл:

Расширение Java Cryptography Extension (JCE) Неограниченная надежность Файлов политики юрисдикции 6

Расширение Java Cryptography Extension (JCE) Неограниченная надежность Файлы политики юрисдикции 7 Скачать

Java Cryptography Extension (JCE) Файлы политики юрисдикции неограниченной силы 8 Скачать (требуется только для версий до Java 8 u162)

Извлеките jar-файлы из zip - архива и сохраните их в ${java.home}/jre/lib/security/.

Ответ 2

Файлы JRE / JDK / Java 8 можно найти здесь:

Расширение Java Cryptography Extension (JCE) Неограниченная надежность Файлы политики юрисдикции 8 Скачать

Как сказал Джеймс выше:
установите файлы в ${java.home}/jre/lib/security/.

Ответ 3

В Java 9, Java 8u161, Java 7u171 и Java 6u181 ограничение теперь отключено по умолчанию. Смотрите Проблему в базе данных ошибок Java.


Начиная с Java 8u151, вы можете отключить ограничение программно.


В более старых версиях файлы юрисдикции JCE приходилось загружать и устанавливать отдельно, чтобы JDK мог использовать неограниченное количество криптографии. В шагах загрузки и установки больше нет необходимости.


Вместо этого теперь вы можете вызвать следующую строку перед первым использованием классов JCE (т. е. Предпочтительно сразу после запуска приложения):

Security.setProperty("crypto.policy", "unlimited");
Ответ 4

Для JAVA 7 ссылка для скачивания - jce-7-скачать

Скопируйте два загруженных jar в Java \ jdk1.7.0_10 \ jre \ lib \ security
Сделайте резервную копию старых jar для большей безопасности.

Для JAVA 8 ссылка для скачивания - jce-8-скачать
Скопируйте загруженные jar-файлы в Java \ jdk1.8.0_45 \ jre \ lib \ security
Сделайте резервную копию старых jar-файлов для большей безопасности.

java