jasypt 配置文件加密实践笔记

1.背景

你知道你们生产环境数据库的用户名、密码么?

啥,你竟然知道?快来看看如何对其进行加密,防止密码泄漏。

2.Jasypt

The easiest way to use Jasypt is using its easy encryption tools, which are called the utils, because they live in the org.jasypt.util package.

They are called utils because they are ready-to-use, preconfigured digesters and encryptors you can use without knowing much about their configuration.

3.jasypt-spring-boot

Jasypt Spring Boot provides Encryption support for property sources in Spring Boot Applications.

4.简单版-快速使用

我们先来一个最简单版,体验一下效果。

1、添加 maven plugin

在我们要加密的配置文件所属的 module 的 pom.xml 中添加如下的 plugin

						<plugin>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-maven-plugin</artifactId>
                <version>3.0.3</version>
            </plugin>

2、修改配置文件中的待加密的字符串

对数据库的用户名、密码使用 DEC() 进行包裹

spring.datasource.username=DEC(root)
spring.datasource.password=DEC(admin)

3、执行 maven plugin 插件命令,对配置文件加密

切换到配置 plugin 的 module 目录下,执行下面的命令

mvn jasypt:encrypt -Djasypt.encryptor.password="the password"

成功后,我们可以看到,配置文件待加密项,变成了如下的样子,这次别人拿到你的代码,也不知道用户名、密码是什么了,大功告成。

spring.datasource.username=ENC(/xSAK8u53npb+F+hH+DpvcVzE0qm5ubh5BhLgqyWK1mFzSz1MVzKvu/NlEKGl/Iy)
spring.datasource.password=ENC(BHUN3TvKMaerfSOiFfCrxyGHAyYxB3qOzstn/eqaXA54WlYCairCTAjrY+68TA4w)

4、配置解密用的密码,启动项目

配置文件这个样子了,项目还能启动么?当然可以,但是我们要指定一下,密码,对就是在执行 maven plugin 时传入的那个。

--jasypt.encryptor.password="the password"

我是用 idea 测试,所以将参数填写在,Program arguablyments 内,如下图:

image.png

是不是很简单,想简单测试一下,源码地址在下面。

5、高级版-自定义加密算法

有的时候,默认的加密算法安全等级不合适,这个时候我们需要自定义加密算法,来,搞起来!

1、实现 StringEncryptor 接口加解密方法

注意添加注解 @Component,示例代码中的加密、解密为了演示效果,使用的是一个简单字符串替换。

@Component
public class MyStringEncryptor implements StringEncryptor {
    @Override
    public String encrypt(String s) {
        switch (s) {
            case "root":
                return "root-en";
            case "admin":
                return "admin-en";
        }

        return null;
    }

    @Override
    public String decrypt(String s) {
        switch (s) {
            case "root-en":
                return "root";
            case "admin-en":
                return "admin";
        }
        return null;
    }
}

2、修改配置文件,手动配置加密后的字符串

这个时候,不能使用插件命令去加密了,我们需要自己手动去加密,项目只负责解密

spring.datasource.username=ENC(root-en)
spring.datasource.password=ENC(admin-en)

3、指定我们的加解密类

jasypt.encryptor.bean=myStringEncryptor

4、启动项目

--jasypt.encryptor.password="the password"
6、实践代码

代码已经上传至 github,https://github.com/zmdstr/jasypt-demo

7、参考文章与推荐阅读

jasypt

jasypt-spring-boot

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值