Ответ
SecretKey — интерфейс в Java Cryptography Architecture (JCA), представляющий секретный (симметричный) ключ для алгоритмов шифрования (AES, DES, ChaCha20).
Основные способы создания:
-
Генерация нового ключа через
KeyGenerator:KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(256); // Размер ключа в битах SecretKey secretKey = keyGen.generateKey(); -
Создание из существующих данных (байтового массива) с помощью
SecretKeySpec:byte[] keyBytes = ...; // Полученные байты ключа SecretKeySpec secretKey = new SecretKeySpec(keyBytes, "AES");
Критически важные практики безопасности:
- Никогда не храните ключи в виде строк или в открытом коде.
- Используйте защищённые хранилища: Java KeyStore (JKS), аппаратные security modules (HSM) или сервисы управления ключами (KMS) от облачных провайдеров.
- Для конфигураций используйте переменные окружения или специализированные инструменты (HashiCorp Vault).
- Соблюдайте принцип минимальных привилегий и регулярно ротируйте ключи.