SpringBoot配置信息加密(jasypt)

一、前言

在我们配置文件中,经常有一些敏感的数据,比如数据源的用户名、密码、连接地址等,如果一旦这些数据泄露,那么将导致我们的数据源暴露,为了避免这一种情况发生,可以将这些敏感信息进行加密处理。

二、实现

1、引入以下依赖

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

版本根据自身需求选择

2、配置加密密钥

有以下两种方式可供选择:

方式一:在配置文件中配置加密密钥

jasypt:
  encryptor:
    password: SFJLXIRGRHHET

方式二:在项目启动时配置加密密钥

java -jar demo.jar  -Djasypt.encryptor.password= SFJLXIRGRHHET

建议使用方式二来进行配置加密密钥,因为加密密钥存放在配置文件中是不安全的,一旦配置文件泄露,所有加密的数据等同于没有加密。在项目启动时配置加密密钥,即使配置文件泄露,也不会造成多大的影响,除非同时得到启动时配置的加密密钥。

3、加密配置文件信息

首先,对需要加密的信息进行加密

@SpringBootTest
@RunWith(SpringRunner.class)
public class JasyptTest {

    @Autowired
    private StringEncryptor stringEncryptor;

    @Test
    public void test(){
        String url = stringEncryptor.encrypt("jdbc\\:mysql\\://127.0.0.1\\:3306/test?useUnicode\\=true&characterEncoding\\=UTF-8&zeroDateTimeBehavior\\=convertToNull&useSSL\\=false&allowMultiQueries\\=true&serverTimezone=Asia/Shanghai");
        String password = stringEncryptor.encrypt("root");
        String username = stringEncryptor.encrypt("root");

        System.out.println("url:" + url);
        System.out.println("password:" + password);
        System.out.println("username: " + username);
    }
}

接下来,获取到加密后的url、password、username,在配置文件中进行配置,使用ENC()将加密后的字符串包住

data:
  url: ENC(wRmYMwEop6JEbMr9zem6KWoVCnvjmOUWVnYbLnC8EXUzTbWzlIiQXlZRsHoRe2wdbqFW6qcJ6ruODSBchWvYK+wzqXPmJyjGUi8ggXKSSJiF3H1K9WtliPxf3ns6zj1yUToYSMZg4Hqf47iXMBGZmWySkPDPKhxM+MjCSxO4DhfKKPq7jHW6bIaqFm2VdoThF5nZXAT7FZZ5Egh+PGAxdnlFbeilCTHyzwEUsS80TS7j3wPFMjF/krataPPgp/KPSftXw6l0cJ2q8tnXkgKuYZ+Nmw8QbsuEApgYARooYic=)
  username: ENC(KFIkzv1QV0oaYMzgHjlefmzbonWZMVA9vzBEx6TnlHGAGO1AolOKQD/FrTegZoqf)
  password: ENC(t2L79RtORPH1UcE9R1g5OYLN9zDVvo9VLNPQmx5cD50AzDxNT2zIdGRGxhW8PgxL)

以上就完成了信息的加密与配置,接下来需要验证是否能够将加密后的信息装换成加密前的信息,直接将配置注入,输出查看是否能够顾正常解密

@SpringBootTest
@RunWith(SpringRunner.class)
public class JasyptTest {

    @Value("${data.url}")
    private String url;

    @Value("${data.username}")
    private String username;

    @Value("${data.password}")
    private String password;

    @Test
    public void test2(){
        System.out.println(url);
        System.out.println(username);
        System.out.println(password);
    }

}

发现能够输入解密之后的信息,以上关于配置文件的加密解密验证就到此结束

三、总结

以上简单讲述配置文件的基本加密使用过程,还有更多有关jasypt的高级用法,请查看官方文档

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值