SpringBoot配合Jasypt实现配置项加密

对于SpringBoot中的重要配置项,如数据库密码等,需要进行密码加密,避免安全问题的发生,可以配合Jasypt实现配置项加密。

首先搭建一个最基础的SpringBoot工程,这个对于你肯定不是问题啦~现在我认为你的SpringBoot项目已经可以正常运行咯~

下面就开始整合Jasypt了!!!

1、添加依赖


    com.github.ulisesbocchio
    jasypt-spring-boot-starter
    1.14

2、通过以下加解密命令,对明文进行加密

// 加密
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="你的明文" password=你的密码 algorithm=PBEWithMD5AndDES

 

// 解密
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="你的密文" password=你的密码 algorithm=PBEWithMD5AndDES
 

          jasypt-1.9.2.jar去Maven Repository下载即可,执行样例(对明文111 使用密码 111 进行加密):

             SpringBoot配合Jasypt实现配置项加密_第1张图片

 

3、使用 jasypt 对配置文件内容加密时,需要在配置文件中增加jasypt.encryptor.password,即为解密使用的密码

对于 dev 开发环境,安全级别较低,为了开发方便,可以直接在bootstrap-dev.properties中设定密码:
# 配置文件密码
jasypt.encryptor.password=111

对于test或者prod环境,安全级别较高,禁止直接将密码写在配置文件中,而是推荐如下的方式:
# 配置文件密码
jasypt.encryptor.password=${es.property.password}

其中的 es.property.password,可以作为启动参数,在启动应用时指定:

 -Des.property.password=111

4、将加密后的密文配置到配置文件中

以ENC(开头,以)结尾,将密文包裹后,配置到配置文件中,例如:

base.password=ENC(yDmJNoBXb0kMkPZMF65GPw==)

测试一下咯~

@RestController
public class TestController
{
    @Value("${base.password}")
    String password;

    @GetMapping("get/password")
    public String test()
    {
        return password;
    }
}

调用一下,成功的将密文解开了:

                             SpringBoot配合Jasypt实现配置项加密_第2张图片

                         

如有疑问请留言,尽力解决疑问~

附GitHub项目地址:https://github.com/mning628/Cicada/tree/master/Cicada-Parent/Boot-Jasypt

 

 

你可能感兴趣的:(SpringBoot)