SpringBoot中集成jasypt-spring-boot实现配置文件数据加密脱敏

场景

经常会遇到这样一种情况:项目的配置文件中总有一些敏感信息,比如数据源的url、用户名、

密码....这些信息一旦被暴露那么整个数据库都将会被泄漏,那么如何将这些配置隐藏呢。

除了使用手动将加密之后的配置写入到配置文件中,提取的时候再手动解密的方式,还可以使用如下

方式。

jasypt-spring-boot

GitHub - ulisesbocchio/jasypt-spring-boot: Jasypt integration for Spring boot

Jasypt-Spring-Boot: Jasypt Spring Boot 为 Spring Boot 项目中的属性源提供加密支持

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主

实现

1、SpringBoot中添加项目依赖

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

2、在配置文件yml中添加一个加密时的秘钥,可任意指定

jasypt:
  encryptor:
    password: badaodechengxvyuan

直接将秘钥放在配置文件中也是不安全,可以在项目启动的时候配置秘钥

java -jar xxx.jar -Djasypt.encryptor.password=badaodechengxvyuan

3、编写单元测试生成加密后的数据

为了将配置的明文数据进行加密,需要将数据进行加密

import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.util.Assert;

@SpringBootTest
class JasyptTest {
    /**
     * inject encryption method
     */
    @Autowired
    private StringEncryptor encryptor;

    /**
     * encrypt data
     */
    @Test
    void encrypt() {
        String name = encryptor.encrypt("root");
        String password = encryptor.encrypt("123456");
        System.out.println("name:"+name);
        System.out.println("password:"+password);
        Assert.isTrue(name.length()>0,"name encrypt success");
        Assert.isTrue(password.length()>0,"password encrypt success");
    }
}

这里为了演示只加密了用户名和密码,当然url或者其他需要加密的明文数据都可以。

运行单元测试会输出加密后的字符串数据

4、将加密后的数据复制到配置文件yml中对应的位置,并使用ENC()包裹。

# 数据源
spring:
  application:
    name: badao-tcp-demo
  datasource:
   url:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: ENC(Ls/gHnNIUDGsGIRbk+KuKaa2E...)
    password: ENC(rCRmLz/Iiu4INB/3+YKVGxC...)

 

上面包裹的前缀和后缀也可通过配置进行更改,以及更多用法比如自己配置加密算法,

可参考官方文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值