文章目录
- 一、jasypt 加密介绍
- 二、springboot 集成步骤
- 2.1、使用 jasypt -spring-boot-starter
- 2.2、启动类添加注解
- 2.3、配置文件
- 三、测试步骤
- 3.1、添加加密后的属性配置
- 3.2、添加测试解析类
一、jasypt 加密介绍
为什么要使用 jasypt 加密 ?
在我们在配置中配置敏感信息的时候 , 要是被不友好的人看见了,就容易产生风险。这个时候就 需要把敏感信息加密。
通过使用 Jasypt,我们可以为属性文件属性提供加密,我们的应用程序将完成解密并检索原始值
二、springboot 集成步骤
2.1、使用 jasypt -spring-boot-starter
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2.2、启动类添加注解
@EnableEncryptableProperties
2.3、配置文件
将加密后的配置信息使用ENC函数,添加到配置文件中,应用启动加载配置文件时,会自动解密。
Jasypt默认算法为PBEWithMD5AndDES,该算法需要一个加密密钥,可以在应用启动时指定(环境变量)。也可以直接写入配置文件,安全性稍差。
properties 版
jasypt.encryptor.password=password
yml 版
jasypt:
encryptor:
password: password
加密函数 :
public static void main(String[] args) {
// 创建加密对象,默认 PBEWithMD5AndDES
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
// 加密所需的密钥
textEncryptor.setPassword("password");
// 加密后
String encData = textEncryptor.encrypt("pwd1234567");
// 解密后
String decData = textEncryptor.decrypt(encData);
System.out.println("前: " + encData);
System.out.println("后: " + decData);
}
三、测试步骤
3.1、添加加密后的属性配置
properties 版
jasypt.encryptor.password=password
encrypted.property=ENC(+X3q/euRZAGs0m6Tibq0YnmIdRemQnXo)
yml 版
jasypt:
encryptor:
password: password
encrypted:
property: ENC(+X3q/euRZAGs0m6Tibq0YnmIdRemQnXo)
3.2、添加测试解析类
@Service
public class PropertyServiceForJasyptService {
@Value("${encrypted.property}")
private String property;
public String getProperty() {
return property;
}
public String getPasswordForENT(Environment environment) {
return environment.getProperty("encrypted.property");
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class JasyptSimpleTest {
@Autowired
PropertyServiceForJasyptService service;
@Autowired
Environment environment;
@Test
public void getFromService() {
System.out.println("service.getProperty() = " + service.getProperty());
System.out.println("service = " + service.getPasswordForENT(environment));
}
}
更多推荐
Springboot 整合 jasypt 实现配置文件敏感信息加密,详细步骤
发布评论