HOME/Articles/

springboot配置文件敏感信息加密

Article Outline

2020了诶!

JXU1MThEJXU4OUMxMjAxOSV1RkYwQzIwMjAldThCRjcldTVCRjkldTYyMTEldTU5N0QldTRFMDAldTcwQjkldTUxM0Y=

springboot配置文件敏感信息加密

问题描述

1、在springboot中,数据库的地址,数据库用户名,数据库密码等,都放在springboot 配置文件中,如果以明文显示,会有一定的风险,经过查阅资料,jasypt可以对配置文件内容进行加密。

基本操作

  • 添加依赖
<dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>1.16</version>
        </dependency>
  • 在application.properties中配置秘钥

    jasypt.encryptor.password: demo
  • 通过测试用例算出需要加密的密文

    import org.jasypt.encryption.StringEncryptor;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes = JasyptApplication.class)
    public class JasyptApplicationTests {
    
        @Autowired
        private StringEncryptor stringEncryptor;
    
        @Test
        public void contextLoads() {
            //加密方法
            System.out.println(stringEncryptor.encrypt("123456"));
            System.out.println(stringEncryptor.encrypt("123456"));
            //解密方法
            System.out.println(stringEncryptor.decrypt("uaNBj4ZmzCD83uedRYUXqQ=="));
            System.out.println(stringEncryptor.decrypt("oKBQENfbbQiMyPvECAgPGA=="));
        }
    
    }
    

    经过测试可以发现,每次加密产生的密文都不相同,不一样的密文配合秘钥解码后的结果是一样的。密文只有对应的秘钥才能解析出明文

  • 在application.properties文件中添加配置项,需要jasypt来解码的密文需要用“ENC(......)”括起来。

    这样就简单的完成了对配置文件中的敏感信息的加密。