当前位置:   article > 正文

【Jasypt】springboot集成Jasypt配置文件加密_jasypt-spring-boot-starter 地址

jasypt-spring-boot-starter 地址

背景

随着互联网的不断发展,信息安全越来越被人们所重视,对一些敏感信息的加密要求也越来越高。按等保要求,项目配置文件里的明文密码导致的数据泄漏等问题也需要解决。本文简单介绍基于Jasypt的配置文件加密使用(jasypt-spring-boot-starter方式)。

Jasypt 简介

官网: http://www.jasypt.org/
githup: https://github.com/jasypt/jasypt

简单使用(jasypt-spring-boot-starter)

1、POM依赖

<properties>
     <jasypt.version>3.0.4</jasypt.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>${jasypt.version}</version>
    </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、生成密文账密

2.1、YML配置

jasypt:
  encryptor:
    # 指定加密的盐值
    password: DbG1GppXOsFa2G69PnmADvQFI3esceEhJYbaEIKCcEO5C85JEqGAhfcjFMGnoRFf
  • 1
  • 2
  • 3
  • 4

2.2、生成密文函数

@SpringBootTest
public class JasyptTest {

    private final String orgUsername = "rycloud";

    private final String orgPassword = "rycloud";

    @Autowired
    private StringEncryptor stringEncryptor;

    @Test
    void encrypt() {
        System.out.println("密文username: " + stringEncryptor.encrypt(orgUsername));
        System.out.println("密文password: " + stringEncryptor.encrypt(orgPassword));
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

3、业务应用中使用

3.1、YML配置

密文配置语法: prefix + 配置密文值 + suffix
Tips:

默认前缀: ENC(, 默认后缀: )
例: ENC(N1kLdL9IDh3L+hW9CCVV+SXj5do9PaNo3IverJ2cBIpb31FMj1e9uTgoy5PepsZE)

# 此处为演示用,生产千万不要在配置文件中,泄露了就可以直接根据盐值解码成密文了,生产通过jar运行参数方式传入
# 指定加密的盐值,必须和生成密文的盐值一致
# jasypt:
#   encryptor:
#     password: DbG1GppXOsFa2G69PnmADvQFI3esceEhJYbaEIKCcEO5C85JEqGAhfcjFMGnoRFf
spring:
  datasource:
    dynamic:
      datasource:
        # 主库数据源
        master:
          driver-class-name: oracle.jdbc.driver.OracleDriver
          url: jdbc:oracle:thin:@192.168.1.8:1528/xe
          # 配置上述2.2中生成的密文账密信息
          username: ENC(N1kLdL9IDh3L+hW9CCVV+SXj5do9PaNo3IverJ2cBIpb31FMj1e9uTgoy5PepsZE)
          password: ENC(0YZ7rj3/+s5ImEnMe2bactYPpzbbsEhnAy1Avr414tmzKHRs6YLlKbKmJOcgTrNx)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.2、使用示例

@SpringBootTest
public class ExampleJasyptTests {

    private final String orgUsername = "jasypt_name";

    private final String orgPassword = "jasypt_password";

    @Autowired
    private StringEncryptor stringEncryptor;

    @Value("${spring.datasource.dynamic.datasource.master.username}")
    private String username ;

    @Value("${spring.datasource.dynamic.datasource.master.password}")
    private String password ;

    @Test
    void encrypt() {
        System.out.println("密文username: " + stringEncryptor.encrypt(orgUsername));
        System.out.println("密文password: " + stringEncryptor.encrypt(orgPassword));
    }
    @Test
    void decrypt() {
        System.out.println("注入的username: " + username);
        System.out.println("注入的password: " + password);
        Assertions.assertEquals(orgUsername, username);
        Assertions.assertEquals(orgPassword, password);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

如图所示
结果

jar运行参数方式传入盐值(jasypt.encryptor.password)

idea 添加VM option参数

-Djasypt.encryptor.password=DbG1GppXOsFa2G69PnmADvQFI3esceEhJYbaEIKCcEO5C85JEqGAhfcjFMGnoRFf
在这里插入图片描述

controller
@RequestMapping("/jasypt")
@RestController
public class JasyptTestController {


    @Value("${spring.datasource.dynamic.datasource.master.username}")
    private String username ;

    @Value("${spring.datasource.dynamic.datasource.master.password}")
    private String password ;

    @GetMapping
    public  String get(){
        return "username:  " + username + "\npassword:  " + password;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
访问在这里插入图片描述

4、jasypt-spring-boot-starter配置

yml中可以查看jasypt-spring-boot-starter的配置,有需要的话 按需配置即可,包括配置前后缀 等
在这里插入图片描述
以上简单介绍了 基于 springboot starter 入门简单使用,其他高级使用参照:https://github.com/ulisesbocchio/jasypt-spring-boot-samples

参考资料

官网: http://www.jasypt.org/
githup: https://github.com/jasypt/jasypt
githup使用案例: https://github.com/ulisesbocchio/jasypt-spring-boot-samples

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/984717
推荐阅读
相关标签
  

闽ICP备14008679号