1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Springboot 整合 jasypt 实现配置文件敏感信息加密 详细步骤

Springboot 整合 jasypt 实现配置文件敏感信息加密 详细步骤

时间:2021-07-28 10:25:09

相关推荐

Springboot 整合 jasypt 实现配置文件敏感信息加密 详细步骤

文章目录

一、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));}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。