Одной из распространенных проблем, с которой могут столкнуться начинающие разработчики на Java, является ошибка «Illegal key size or default parameters». Эта ошибка обычно возникает при попытке инициализировать экземпляр класса javax.crypto.Cipher
с ключом, размер которого превышает допустимые пределы.
String key = "слишком длинный ключ"; try { Cipher c = Cipher.getInstance("ARCFOUR"); SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "ARCFOUR"); c.init(Cipher.DECRYPT_MODE, secretKeySpec); //... } catch (InvalidKeyException e) { // обработка исключения }
В приведенном примере ключ имеет слишком большую длину, что вызывает исключение InvalidKeyException
при попытке инициализации экземпляра класса Cipher
.
Эта проблема связана с ограничениями на использование криптографии в Java. Версии Java до 1.8 поставлялись с ограниченной политикой криптографии, которая не позволяла использовать ключи размером больше 128 бит. Чтобы обойти это ограничение, необходимо установить более свежую версию Java или загрузить и установить файлы политики неограниченной силы шифрования JCE (Java Cryptography Extension).
Для установки файлов JCE следуйте этим шагам:
- Загрузите файлы JCE для вашей версии Java. Они доступны на официальном сайте Oracle.
- Распакуйте загруженный архив. Он должен содержать два файла:
local_policy.jar
иUS_export_policy.jar
. - Замените оригинальные файлы
local_policy.jar
иUS_export_policy.jar
в каталоге${java.home}/lib/security
(для Java 8 и ниже) или в каталоге${java.home}/jre/lib/security
(для Java 9 и выше) на файлы из загруженного архива.
После выполнения этих шагов ошибка «Illegal key size or default parameters» должна исчезнуть.
Добавить комментарий