SpringBoot3使用Jasypt实现配置文件信息加密的方法

背景

对于一些单体项目而言,在没有使用SpringCloud的情况下,配置文件中包含着大量的敏感信息,如果这些信息泄露出去将会对企业的资产产生重大威胁,因此,对配置文件中的敏感信息加密是一件极其必要的事,所以本文介绍了SpringBoot3使用Jasypt实现配置文件信息加密的方法

一、什么是Jasypt?

在这里插入图片描述
Jasypt是一个易于使用的Java库,专门用于加密和解密配置文件中的敏感信息,如数据库凭据、API密钥等。它提供了一种安全的方式来存储和管理配置文件中的敏感数据,而不是以明文形式暴露。

Jasypt支持多种加密算法,如DES、AES、Blowfish等,以及基于口令的加密算法(PBE)。它还提供了灵活的配置选项,允许开发人员自定义加密算法、密码、初始化向量等。

官网:jasypt-spring-boot

二、开发环境

JDK版本:JDK 17
Spring Boot版本:Spring Boot 3.2.2
MySQL版本:8.0.37
构建工具:Maven

三、Jasypt集成到SpringBoot3

3.1.引入依赖

        <!-- 配置文件yml加密 -->
        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>

3.2 配置Jasypt

在这里插入图片描述
password: 指定用于加密和解密的密码。
algorithm: jasypt的加密算法,这里指定加密算法为一种结合了SHA-512 HMAC和AES-256加密算法的强加密算法。
iv-generator-classname: 指定用于生成初始化向量的类。RandomIvGenerator是一个随机生成初始化向量的生成器,它适用于需要初始化向量的加密算法,如AES。每次加密时,它都会生成一个新的随机初始化向量,增加了解密的难度。

property.prefix: 指定加密值的前缀。当Jasypt处理配置文件时,它会查找以这个前缀开始的属性值,并尝试使用配置的加密算法进行解密。默认值是ENC(,也可以进行修改。
property.suffix: 指定加密值的后缀。与prefix类似,Jasypt会查找以这个后缀结束的属性值进行解密。默认值是)。

3.3 加密配置文件信息

在这里插入图片描述

3.4 生成加密数据

package com.dbgs.common.utils.Jasypt;

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;

public class JasyptUtil {

    private final static String SECRECT = "asd"; //秘钥
    private final static String ALGORITHM = "6tfc$YHN4esz$RFV"; //加密算法

//    public static void main(String[] args) {
//        System.out.println("密文密码:" + encrypt("123"));
//    }

    private static String encrypt(String text){
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();
        config.setAlgorithm(ALGORITHM);
        config.setPassword(SECRECT);
        standardPBEStringEncryptor.setConfig(config);
        return standardPBEStringEncryptor.encrypt(text);
    }

    public static String decrypt(String text) {
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();
        config.setAlgorithm(ALGORITHM);
        config.setPassword(SECRECT);
        standardPBEStringEncryptor.setConfig(config);
        return standardPBEStringEncryptor.decrypt(text);
    }

}

调用encrypt方法将密码生成密文,然后放置yml文件中。用ENC()包裹。

3.5 启动脚本

需要将生成密文的秘钥对应添加到启动脚本中
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值