В pom.xml добавьте следующую запись.

В разделе свойств добавьте версию. 3.0.4 — последняя версия на 2 декабря 2022 г.

<properties>
    <jasypt.version>3.0.4</jasypt.version>
</properties>

В разделе зависимости

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>${jasypt.version}</version>
</dependency>

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

<plugin>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-maven-plugin</artifactId>
    <version>${jasypt.version}</version>
</plugin>

Конфигурация

ИСПОЛЬЗОВАНИЕ АННОТАЦИИ

В вашей основной точке входа Springboot добавьте аннотацию @EnableEncryptableProperties. На самом деле этого достаточно, чтобы использовать jasypt.

@SpringBootApplication
@EnableEncryptableProperties
public class Application implements ApplicationRunner {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(ApplicationArguments arguments) {
    }
}

ИСПОЛЬЗОВАНИЕ КЛАССА КОНФИГУРАЦИИ

Помимо использования аннотаций, мы также можем настроить программно, если это необходимо. Посмотреть образец

@Configuration
public class JasyptEncryptorConfig {
    @Value("${jasypt.encryptor.password:mySaltValueHereChangeThis}")
    private String salt;

    @Value("${jasypt.encryptor.algorithm:PBEWithMD5AndDES}")
    private String algorithmn;


    @Bean(name = "jasyptStringEncryptor")
    public StringEncryptor getPasswordEncryptor() {
        var encryptor = new PooledPBEStringEncryptor();
        var config = new SimpleStringPBEConfig();
        config.setPassword(salt);
        config.setAlgorithm(algorithmn);
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }
}

ИСПОЛЬЗОВАНИЕ СОЛЬ

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

Использовать параметры виртуальной машины

-Djasypt.encryptor.password=mySaltValueHereChangeThis

Использовать файл конфигурации

образец YAML

jasypt:
  encryptor:
    password: mySaltValueHereChangeThis

Образец файла свойств

jasypt.encryptor.password=mySaltValueHereChangeThis

Переменная среды

Это переопределит значение файла конфигурации, если вы также введете туда запись.

JASYPT_ENCRYPTOR_PASSWORD=mySaltValueHereChangeThis

Шифрование

В нашем примере нам нужно было зашифровать пароль mysupersecretpassword123!.

mvn jasypt:encrypt-value -Djasypt.plugin.value=mysupersecretpassword123!

или если вы хотите использовать salt, команда

mvn jasypt:encrypt-value -Djasypt.encryptor.password=mySaltValueHereChangeThis -Djasypt.plugin.value=mysupersecretpassword123!

Вывод что-то вроде

ENC(nObqvmVPYhxVaykMl09QVtGCQWjpd7al1RJhOsyz1eLkb6J2USMu9Fb//e4a6Vro)

Вы можете скопировать это в свой файл конфигурации и все. Когда вы запускаете свое приложение, оно должно иметь возможность расшифровать это и обработать исходное значение.

Использование заполнителей

Это необходимо только в том случае, если вы не хотите копировать и вставлять вывод. Что вы хотели, так это заменить значение конфигурации из файла конфигурации.

В вашем файле конфигурации используйте DEC.

Образец YAML-файла

password: DEC(mysupersecretpassword123!)

Образец файла свойств

password=DEC(mysupersecretpassword123!)

После того, как вы установили DEC, выполните команду

mvn jasypt:encrypt

или при использовании соли

mvn jasypt:encrypt -Djasypt.encryptor.password=mySaltValueHereChangeThis

Команда заменила DEC на ENC и значение на зашифрованное.

Проверка зашифрованного значения

Если вы хотите увидеть незашифрованное значение, вы можете выполнить следующие команды.

mvn jasypt:decrypt

или при использовании соли

mvn jasypt:decrypt -Djasypt.encryptor.password=mySaltValueHereChangeThis

Рекомендации