Spring Boot 集成 Jasypt 实现敏感信息加密

Spring Boot 集成 jasypt 实现敏感信息加密

本章节将介绍 Spring Boot 集成 jasypt 实现敏感信息加密。

🤖 Spring Boot 2.x 实践案例(代码仓库)

介绍

jasypt 是一个开源的 Java 加密库,可以用来加密敏感信息,比如数据库密码、配置文件中的密码等。它提供了强大的加密算法,比如 AES、DES、PBE 等,可以满足大部分的加密需求。

官方仓库

引入依赖

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>

配置加密密钥

application.yml配置文件里新增如下配置:

jasypt:
  encryptor:
  	# 配置加密密钥
    password: StarImmortal

加密密钥建议使用环境变量或者启动参数:–jasypt.encryptor.password=StarImmortal

配置密文前后缀

jasypt默认提供ENC来标记加密字段,可以自定义密文前后缀标记:

jasypt:
  encryptor:
  	# 配置加密密钥
    password: StarImmortal
    # 配置密文前后缀
    property:
    	prefix: StarImmortal(
    	suffix: )

加密测试

import org.jasypt.encryption.StringEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;

@SpringBootApplication
public class JasyptApplication implements CommandLineRunner {

    @Autowired
    private ApplicationContext applicationContext;

    @Autowired
    private StringEncryptor stringEncryptor;

    public static void main(String[] args) {
        SpringApplication.run(JasyptApplication.class, args);
    }

    @Override
    public void run(String... args) {
        Environment environment = applicationContext.getEnvironment();

        // 首先获取配置文件里的原始明文信息
        String mysqlOriginPassword = environment.getProperty("spring.datasource.password");

        // 加密
        String mysqlEncryptedPassword = stringEncryptor.encrypt(mysqlOriginPassword);

        // 打印加密前后的结果对比
        System.out.println("MySQL原始明文密码为:" + mysqlOriginPassword);
        System.out.println("====================================");
        System.out.println("MySQL原始明文密码加密后的结果为:" + mysqlEncryptedPassword);
    }
}
MySQL原始明文密码为:123456
Redis原始明文密码为:111111
====================================
MySQL原始明文密码加密后的结果为:IV7SyeQOfG4GhiXeGLboVgOLPDO+dJMDoOdmEOQp3KyVjruI+dKKeehsTriWPKbo
Redis原始明文密码加密后的结果为:litUkxJ3fN6+//Emq3vZ+y4o7ZOnZ8doOy7NrgJIDLoNWGG0m3ygGeQh/dEroKvv

替换待加密配置项

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jasypt?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=UTF8
    username: "root"
    password: StarImmortal(IV7SyeQOfG4GhiXeGLboVgOLPDO+dJMDoOdmEOQp3KyVjruI+dKKeehsTriWPKbo)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人人都在发奋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值