Jasypt加密

使用场景

我们的一些项目的配置文件中难免会有一些敏感的配置信息,虽然现在都用alibaba的nacos,但是如果我们有些项目不是分布式的话,我们就需要处理一下。接下来我们就来看看,如何使用jasypt对敏感信息加密。

搭建SpringBoot项目

我们直接从start.spring.io直接构建就好了,我们就不在进行阐述了,我们打开项目,然后加入以下依赖,如下:

	<dependencies>
		<dependency>
			<groupId>com.github.ulisesbocchio</groupId>
			<artifactId>jasypt-spring-boot-starter</artifactId>
			<version>3.0.3</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>com.github.ulisesbocchio</groupId>
				<artifactId>jasypt-maven-plugin</artifactId>
				<version>3.0.3</version>
			</plugin>
		</plugins>
	</build>

编写配置

# 加密、解密用的密码
jasypt.encryptor.password=didispace
# 个性化配置
person.name=lisi
person.password=administrator

配置类:

@Component
@Slf4j
@Data
public class SystemConfig {

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

    public String toString(){
        log.info("name:{},password:{}",name,password);
        return name+","+password;
    }
}

启动入口:

@SpringBootApplication
public class JasyptApplication implements ApplicationRunner {

	@Autowired
	private SystemConfig config;

	public static void main(String[] args) {
		SpringApplication.run(JasyptApplication.class, args);
	}

	@Override
	public void run(ApplicationArguments args) throws Exception {
		System.out.println(config.toString());
	}
}

使用命令对其加密

对要加密的属性,使用DEC()修饰,如下:

person.password=DEC(administrator)

然后我们使用以下命令,(注意这里的密码就是jasypt.encryptor.password)如下:

mvn jasypt:encrypt -Djasypr.encryptor.password=didispace

在这里插入图片描述
此时的属性配置就变成了ENC(),某些属性配置被加密了,这样算是保护项目的手段之一。那我们公司内部人员开发的时候,需要查看明文是什么,执行以下命令,解密配置文件中的属性值只会在控制台里面输出,配置文件中依旧是秘文。如下:

mvn jasypt:decrypt -Djasypt.encryptor.password=didispace

在这里插入图片描述

如何处理配置文件中的加密密码呢?

这里我们还疏忽了一点,就是我们的加密密码还在配置文件中,我们可以这样做,步骤如下:

  1. 首先,将密码配置去掉,内容如下:
person.name=lisi
person.password=DEC(administrator)
  1. 使用命令将配置加密,命令如下:
mvn jasypt:encrypt -Djasypr.encryptor.password=didispace

配置加密后,内容如下:

person.name=lisi
person.password=ENC(6CtwtxVn8mNu9qwFdxUfsiruwN9JnNW7s8fGLEPCDXqmQco93/RWeuYf9La0UEnk)
  1. 因为配置文件中没有配置jasypt的密码,那么我们用maven命令是无法打包的,我们可以使用以下命令将项目打成jar包,命令如下:
mvn jasypt:encrypt -Djasypt.encryptor.password=didispace  install
  1. 此时我们直接使用命令是无法运行jar包的,因为现在密码是加密的,我们的sysconfig配置类无法完成属性注入,如下:
    在这里插入图片描述
  2. 我们通过命令行传入参数的方式启动jar包,命令如下:
 java -jar jasypt-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=didispace
  1. 我们打开jar包看下配置文件的内容是不是加密的,如下

    这样我们就做到了没有配置密码情况下对项目、jar包的保护!!!
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟特工007

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

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

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

打赏作者

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

抵扣说明:

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

余额充值