赞
踩
为什么要使用 jasypt 加密 ?
在我们在配置中配置敏感信息的时候 , 要是被不友好的人看见了,就容易产生风险。这个时候就 需要把敏感信息加密。
通过使用 Jasypt,我们可以为属性文件属性提供加密,我们的应用程序将完成解密并检索原始值
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
@EnableEncryptableProperties
将加密后的配置信息使用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);
}
properties 版
jasypt.encryptor.password=password
encrypted.property=ENC(+X3q/euRZAGs0m6Tibq0YnmIdRemQnXo)
yml 版
jasypt:
encryptor:
password: password
encrypted:
property: ENC(+X3q/euRZAGs0m6Tibq0YnmIdRemQnXo)
@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)); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。