Длина ключей шифрования, использующихся в масштабных программных проектах, обычно превосходит длину ключей в 128 бит, поддерживаемую стандартными средствами платформы Java. Если не снимать ограничение с длины ключа, в таком приложении при попытке дешифрования появится сообщение об ошибке:

java.security.InvalidKeyException: Illegal key size

В программном коде она возникает, например, во время вызова метода init():

byte[] keyBytes = new byte[32];
...
final SecretKey key = new SecretKeySpec(keyBytes, "AES");
final IvParameterSpec iv = new IvParameterSpec(ivBytes);
Cipher aesCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
aesCipher.init(Cipher.DECRYPT_MODE, key, iv); 

Архитектура JCE позволяет настроить длину ключа посредством специальных файлов политики. Расширение JCE Unlimited Strength Jurisdiction Policy Files, содержащее в себе эти файлы, позволяет снять ограничения с длины ключа для большинства стран.

Этапы установки

1 этап

Скачать архив Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files требуемой версии с сайта Oracle и распаковать его.

Расширение Java Cryptography можно скачать с сайта Oracle:

2 этап

Файлы US_export_policy.jar и local_policy.jar нужно заменить по следующему пути: JRE_HOMElibsecurity, где JRE_HOME относится к той директории, где установлена JRE, и зависит также от того, установлена ли JDK. Примеры типичных путей установки JRE:
Windows

  • C:Program FilesJavajdk1.6.xjre
  • C:Program FilesJavajre1.6.x
  • C:Program FilesJavajdk1.7.xjre
  • C:Program FilesJavajre1.7.x

Linux

  • /home/user/jdk1.6.x/jre
  • /home/user/jre1.6.x
  • /usr/local/java/jdk1.6.x/jre
  • /usr/local/java/jre1.6.x
  • /home/user/jdk1.7.x/jre
  • /home/user/jre1.7.x
  • /usr/local/java/jdk1.7.x/jre
  • /usr/local/java/jre1.7.x

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