【Jasypt】springboot集成Jasypt配置文件加密

背景

随着互联网的不断发展,信息安全越来越被人们所重视,对一些敏感信息的加密要求也越来越高。按等保要求,项目配置文件里的明文密码导致的数据泄漏等问题也需要解决。本文简单介绍基于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>

2、生成密文账密

2.1、YML配置

jasypt:
  encryptor:
    # 指定加密的盐值
    password: DbG1GppXOsFa2G69PnmADvQFI3esceEhJYbaEIKCcEO5C85JEqGAhfcjFMGnoRFf

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

}

在这里插入图片描述

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)

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

如图所示
结果

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;
    }

}
访问在这里插入图片描述

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jasypt(Java Simplified Encryption)是一个Java加密库,它可以用来加密/解密文本、哈希密码等。Spring Boot提供了对Jasypt的支持,可以在应用程序中轻松使用Jasypt加密敏感信息。下面是使用Jasypt对MySQL配置文件进行加密的步骤: 1. 引入Jasypt依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 2. 配置加密 在application.properties或者application.yml中添加以下配置: ```properties jasypt.encryptor.password=your_password ``` 其中,your_password是用来加密敏感信息的密码。 3. 加密MySQL配置信息 在application.properties或者application.yml中加入MySQL配置信息,如下: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root ``` 将密码部分使用Jasypt进行加密,如下: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=ENC(加密后的密码) ``` 其中,加密后的密码可以使用Jasypt提供的加密工具进行加密。例如,我们可以使用以下命令生成加密后的密码: ``` java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password="your_password" algorithm=PBEWithMD5AndDES ``` 其中,jasypt-1.9.2.jar是Jasypt的jar包,your_password是用来加密敏感信息的密码。执行以上命令后,会输出加密后的密码。 4. 配置解密 在启动应用程序时,Spring Boot会自动解密加密的敏感信息。因此,我们不需要任何额外的配置来解密MySQL密码。只需将加密后的密码放入配置文件即可。 至此,我们已经成功地使用Jasypt对MySQL配置文件进行了加密

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值