Basic info can be configured in applicaiton.yml, like username, pasword, etc. The plaintext of password is not safe. Jasypt help encrypt the sensitive information.

pom dependecny

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

config application.yml

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/test
      username: root
      password: ENC(imOyX+iTLUZG1EwmTdHAVS/CX7PK/y7o)


ENC(imOyX+iTLUZG1EwmTdHAVS/CX7PK/y7o) is encrypted with salt by Jasypt. The plaintext is 12345678


Jaspyt config in application.yml

jasypt:
  encryptor:
    # encrypted salt
    password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7

Jaspyt UtilTool

import lombok.extern.slf4j.Slf4j;
import org.jasypt.util.text.BasicTextEncryptor;

@Slf4j
public final class JasyptUtil {
    private JasyptUtil() {

    }

    public static String encryptPassword(String salt, String value) {
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        textEncryptor.setPassword(salt);
        String result = textEncryptor.encrypt(value);
        log.info("encrypted password (Basic mode) = {}", result);
        return result;
    }

    public static String decryptPassword(String salt, String value) {
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        textEncryptor.setPassword(salt);
        String result = textEncryptor.decrypt(value);
        log.info("decypted password (Basic mode) = {}", result);
        return result;
    }
}

Jaspyt Test

public static void main(String[] args) {
    String str = decryptPassword("EbfYkitulv73I2p0mXI50JMXoaxZTKJ7", "imOyX+iTLUZG1EwmTdHAVS/CX7PK/y7o");
    System.out.println(str.equalsIgnoreCase("12345678")); // true
}