Решение: 256-битное AES шифрование в Java без JCE файлов
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы избежать установки файлов политик Unlimited Strength JCE, используйте Bouncy Castle в качестве криптографического провайдера:
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Security;
Security.addProvider(new BouncyCastleProvider());
// И вот ваше приложение "летит" в темпах, измеряемых в битах.
Благодаря Bouncy Castle вы сможете избавиться от ограничений политик, облегчив процесс развертывания.
Современная криптография с помощью Bouncy Castle
Теперь вы можете предоставить своему приложению обеспечение 256-битного шифрования AES без потребности устанавливать файлы политик JCE, если используете современные версии JDK (начиная с Java 8 Update 161). Вот как это сделать:
import javax.crypto.Cipher;
import java.security.Security;
public class SecureApp {
static {
if (isRestrictedCryptography()) {
Security.setProperty("crypto.policy", "unlimited");
}
}
private static boolean isRestrictedCryptography() {
return "Java(TM) SE Runtime Environment".equals(System.getProperty("java.runtime.name"));
}
// Ваш код следует здесь...
}
Этот фрагмент кода поможет преодолеть различные криптографические ограничения.
Шагаем в ногу с развитием Java
Следите за обновлениями экосистемы Java, забыть об установке JCE руками, регулярно обновляя JDK. Проверьте поддержку неограниченной криптографии в вашей версии JDK следующим образом:
java -version
// И убедитесь в новых возможностях.
Обновление до JDK 8u161 или более поздней версии обеспечивает использование последних разработок в области безопасности и соответствующих стандартов в Java.
Визуализация
Представьте себе, что больше нет необходимости устанавливать файлы политик JCE, что можно сравнить с отказом от использования специального ключа (🔑), чтобы войти в ограниченную зону (🚷):
Сценарий БЕЗ файлов политики JCE:
Приложение (📦): "Могу я пройти в ограниченную зону (🚷)?"
Java (👮♂️): "Нужен специальный ключ (🔑)."
Сценарий С решением:
Приложение (📦): "Можно ли мне войти в зону повышенной безопасности (🔒)?"
Java (👮♂️): "Конечно, проходите без ключа."
// Основная мысль:
Без специального ключа: 🔓 Параметры безопасности Java таковы, что можно обходиться без файлов политики JCE (🔑).
Таким образом, нашему приложению легко дается доступ в зону высокой безопасности (🔒) без необходимости наличия специальных ключей.
Плавно минуем укрепленные барьеры шифрования
Настройте процесс развертывания так, чтобы файлы политик JCE загружались динамически при выполнении вашего приложения. Создайте специальный инсталлятор или использование сторонних решений безопасности поможет изолировать криптографические аспекты от вашего кода:
try {
Method m = Class.forName("javax.crypto.JceSecurity").
getDeclaredMethod("isRestricted");
m.setAccessible(true);
m.invoke(null, false);
} catch (Exception e) {
e.printStackTrace();
}
// Важно: Этот метод может показаться нетривиальным, но помните о необходимости соблюдения местного закона.
Всегда принимайте во внимание местное законодательство и юридические требования чтобы ваша работа была легитимной.
Расширьте свой криптографический кругозор
Познакомьтесь с сторонними библиотеками, такими как Apache Shiro или Spring Security, для внедрения шифрования. Эти фреймворки предлагают упрощенные и надежные решения для обеспечения безопасности приложений.
Полезные материалы
- Руководство по Java Cryptography Architecture (JCA)
- Скачать файлы политик JCE Unlimited Strength Jurisdiction для JDK/JRE 8
- Java Security: Illegal key size or default parameters? – Stack Overflow
- FIPS 197, Стандарт шифрования Advanced Encryption Standard (AES) | CSRC
- Криптографические API Bouncy Castle для Java
- Apache Shiro | Simple. Java. Security.