Код: Выделить всё
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.stereotype.Component;
@Component
public class EncryptedPropertySourcesPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer {
private static final Logger logger = LoggerFactory.getLogger(EncryptedPropertySourcesPlaceholderConfigurer.class);
@Override
protected String convertPropertyValue(String originalValue) {
logger.debug("Processing property value: {}", originalValue);
if (originalValue != null && originalValue.startsWith("ENC(") && originalValue.endsWith(")")) {
final String encryptedValue = originalValue.substring(4, originalValue.length() - 1);
try {
final String encryptionKey = System.getenv("ENCRYPTION_KEY");
if (encryptionKey == null) {
throw new IllegalStateException("ENCRYPTION_KEY environment variable is not set.");
}
final String decryptedValue = CryptoUtil.decrypt(encryptedValue, encryptionKey);
logger.debug("Decrypted value: {}", decryptedValue);
return decryptedValue;
} catch (Exception e) {
logger.error("Failed to decrypt property value: {}", originalValue, e);
throw new RuntimeException("Failed to decrypt property value", e);
}
}
return originalValue;
}
}
Я поместил в свой основной класс методы отладки, которые проверяли, что хранилище ключей/хранилище доверенных сертификатов найдено, что SslBundle загружается, зашифрованное значение было найден в файле, и он был правильно расшифрован. Все это сработало, но в зависимости от того, какое поле я выбираю для шифрования для проверки, приложение не работает в этом поле.
Подробнее здесь: https://stackoverflow.com/questions/792 ... encryption
Мобильная версия