文章目录
一、jasypt 加密介绍二、springboot 集成步骤2.1、使用 jasypt -spring-boot-starter2.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) {// 创建加密对象,默认 PBEWithMD5AndDESBasicTextEncryptor 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=passwordencrypted.property=ENC(+X3q/euRZAGs0m6Tibq0YnmIdRemQnXo)
yml 版
jasypt:encryptor:password: passwordencrypted:property: ENC(+X3q/euRZAGs0m6Tibq0YnmIdRemQnXo)
3.2、添加测试解析类
@Servicepublic 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)@SpringBootTestpublic class JasyptSimpleTest {@AutowiredPropertyServiceForJasyptService service;@AutowiredEnvironment environment;@Testpublic void getFromService() {System.out.println("service.getProperty() = " + service.getProperty());System.out.println("service = " + service.getPasswordForENT(environment));}}