为保障安全,在我们生产环境中,可能会要求我们对密码进行加密操作,一起看看我们该如果操作。

1、pom.xml引入依赖

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

2、写一个main函数将我们的密码进行加密

public class JasyptTest {
    private static final Logger logger = LoggerFactory.getLogger(JasyptTest.class);

    public static void main(String[] args) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
        encryptor.setPassword("zhi");
        encryptor.setIvGenerator(new RandomIvGenerator());

        // 加密
        String encryptText = encryptor.encrypt("abc123");
        logger.info("加密后的信息:{}", encryptText);

        // 解密
        String decryptText = encryptor.decrypt(encryptText);
        logger.info("解密后的信息:{}", decryptText);
    }
}

执行后输出:

abc123被加密成:+yFLnV9/k2Km3vpGHMDhYLVId+2tfWnpJT/r1H0vmYPPtjiInBnfmamEjUQkFD0V

注意:这里的加密方式需要与jasypt-spring-boot-starter保持一致,见下面的代码解读。

3、修改数据库配置参数

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/zhi_test?useSSL=false
spring.datasource.username=root
spring.datasource.password=ENC(I4gM5/FpHfeA7fW1fioYgBRjZRG5nHl1WEJhDbgm28YFgpndkb1HQR+846TrAFJt)  #ENC()内的信息就上面加密信息

4、配置启动参数

因为数据库连接密码被加密,服务启动时我们必须将密文进行解密,解密参数如下:

jasypt.encryptor.password=zhi

1)可以将解密参数直接写到properties文件中(不推荐)

2)配置VM运行参数-Djasypt.encryptor.password=zhi

3)打成jar后我们可以在启动命令中添加参数

java -jar xxx.jar --jasypt.encryptor.password=zhi

 

代码解读:

1、jasypt配置类:JasyptEncryptorConfigurationProperties

2、jasypt-spring-boot-starter如何创建加密解密类,见StringEncryptorBuilder.build()方法

 

posted on 2022-08-26 17:28  玄同太子  阅读(2099)  评论(0编辑  收藏  举报