springboot使用jasypt对配置文件加解密使用
1、在项目开发过程中,有时候需要对项目的配置文件进行一些加密措施。在这里发现使用jasypt是一个不错的选择。这里放上作者github的项目地址https://github.com/ulisesbocchio/jasypt-spring-boot
2、 作者发行了一个starter依赖包jasypt-spring-boot-starter
jasypt-spring-boot-starter的使用非常简单,加入依赖后,在项目配置文件中配置即可。
3、jasypt-spring-boot-starter的使用
首先创建一个springboot的web项目,这里不再赘述,加入jasypt-spring-boot-starter的maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
4、唯一需要我们在配置文件中配置的就是用于加密解密的密码,其他采用默认配置
这里我在application.yml中加入相关配置
jasypt:
encryptor:
password: womendoushihaohaizi
5、通过配置文件的提示信息,可以看到jasypt配置的相关默认值配置,可以根据实际情况进行修改
6、具体使用方法,首先需要对需要加密的明文使用stringEncryptor进行加密,可以写一个springbean注入StringEncryptor就可以使用了,由于加密过程中使用了随机盐机制,对同一个信息进行多次加密,每次密文是不一样的。
@Service
public class JasyptService {
@Autowired
private StringEncryptor stringEncryptor;
public void testJasypt() {
// 加密
System.out.println(stringEncryptor.encrypt("admin"));
System.out.println(stringEncryptor.encrypt("1234"));
// 测试对加密的信息解密
System.out.println(stringEncryptor.decrypt("BOKRA22w8tdZokNBSG2mQbVig3whrVRmxsxs/f8kS3b5QNsysOt8cD9g3/w7rXHw"));
System.out.println(stringEncryptor.decrypt("r9/cH28YaTi9pMERFIX5F1l/AYcnTPkClpSKMRYuH+61jeqwz+vWhGNA1KRSdBHo"));
}
}
7、把密文放到配置相应的地方
这里简单测试一下,配置文件中配置user:admin和password:1234对应的密文
在项目代码中使用@Value对配置信息进行注入,然后项目启动时打印变量值。从控制台可以得到对应的明文信息admin和1234
test:
user: ENC(BOKRA22w8tdZokNBSG2mQbVig3whrVRmxsxs/f8kS3b5QNsysOt8cD9g3/w7rXHw)
password: ENC(r9/cH28YaTi9pMERFIX5F1l/AYcnTPkClpSKMRYuH+61jeqwz+vWhGNA1KRSdBHo)
@Value("${test.user}")
private String user;
@Value("${test.password}")
private String password;
@PostConstruct
public void init(){
System.out.println(user);
System.out.println(password);
}
小尾巴~~
只要有积累,就会有进步