SpringBoot配置文件加密

SpringBoot配置文件加密

  1. 新建SpringBoot项目

  2. 在maven中引入jasypt加密组件

    <!-- jasypt加密组件: https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter -->
            <dependency>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-spring-boot-starter</artifactId>
                <version>2.1.0</version>
            </dependency>
    
  3. 在配置文件中配置加密密钥

    #加密的密钥
    jasypt.encryptor.password=sc
    
  4. 新建测试类

    @Test
        public void sc(){
            // 对应配置文件中配置的加密密钥
            System.setProperty("jasypt.encryptor.password", "sc");
            StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
            System.out.println("加密: " + stringEncryptor.encrypt("root"));
            System.out.println("加密: "+ stringEncryptor.encrypt("root"));
            System.out.println("解密: " + stringEncryptor.decrypt("itJ8zZfWj54ZIf1lLVojrg=="));
        }
    
  5. 将加密后的账号和密码复制到配置文件中,jasypt默认使用ENC()来标识加密,加载配置的时候检测到ENC()即会自动解密

    # 数据库连接地址
    spring.datasource.url=jdbc:mysql://localhost:3306/ceshi?serverTimezone=UTC
    # 数据库用户名&密码:
    spring.datasource.username=ENC(b6zfPR9R9aaTtl5VPwrvww==)
    spring.datasource.password=ENC(AvEzdYaTFniscWGhUw6M/ERwKwhpbZE7)
    

    jasypt默认使用ENC()来标识加密

    自定义加密标识CESHI()

    #加密前缀
    #jasypt.encryptor.property.prefix=CESHI(
    #加密后缀缀
    #jasypt.encryptor.property.suffix=)
    
以上我们的密钥也是保存在配置文件中的,一旦密钥泄露,信息被解密,安全隐患依然存在!因此我们可以通过将密钥设置为程序启动时的参数来避免。
java -Djasypt.encryptor.password=加密的密钥 -jar test.jar
posted @ 2022-11-09 16:24  striver-sc  阅读(757)  评论(0编辑  收藏  举报