in src/main/java/org/apache/sling/commons/crypto/jasypt/internal/JasyptStandardPbeStringCryptoService.java [105:137]
private void setupEncryptor(final JasyptStandardPbeStringCryptoServiceConfiguration configuration) {
final String algorithm = configuration.algorithm();
final Set<?> algorithms = AlgorithmRegistry.getAllPBEAlgorithms();
if (!algorithms.contains(algorithm)) {
logger.warn("Configured algorithm {} for password based encryption is not available. {}", algorithm, algorithms);
}
final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
// mandatory
encryptor.setAlgorithm(algorithm);
final IvGenerator ivGenerator = this.ivGenerator;
encryptor.setIvGenerator(ivGenerator);
// optional
encryptor.setKeyObtentionIterations(configuration.keyObtentionIterations());
encryptor.setStringOutputType(configuration.stringOutputType());
final String securityProviderName = configuration.securityProviderName();
if (Objects.nonNull(securityProviderName) && !securityProviderName.isBlank()) {
encryptor.setProviderName(securityProviderName);
}
final Provider provider = this.securityProvider;
if (Objects.nonNull(provider)) {
encryptor.setProvider(provider);
}
final SaltGenerator saltGenerator = this.saltGenerator;
if (Objects.nonNull(saltGenerator)) {
encryptor.setSaltGenerator(saltGenerator);
}
// set mandatory password, initialize encryptor, clear password
final char[] password = passwordProvider.getPassword();
encryptor.setPasswordCharArray(password);
encryptor.initialize();
Arrays.fill(password, '0');
this.encryptor = encryptor;
}