首页 > 其他分享 >SpringBoot中集成jasypt-spring-boot实现配置文件数据加密脱敏

SpringBoot中集成jasypt-spring-boot实现配置文件数据加密脱敏

时间:2023-07-15 14:12:10浏览次数:42  
标签:加密 SpringBoot 配置文件 jasypt spring password name

场景

经常会遇到这样一种情况:项目的配置文件中总有一些敏感信息,比如数据源的url、用户名、

密码....这些信息一旦被暴露那么整个数据库都将会被泄漏,那么如何将这些配置隐藏呢。

除了使用手动将加密之后的配置写入到配置文件中,提取的时候再手动解密的方式,还可以使用如下

方式。

jasypt-spring-boot

https://github.com/ulisesbocchio/jasypt-spring-boot

https://gitee.com/mirrors/Jasypt-Spring-Boot_old1?_from=gitee_search

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

1、SpringBoot中添加项目依赖

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

2、在配置文件yml中添加一个加密时的秘钥,可任意指定

jasypt:
  encryptor:
    password: badaodechengxvyuan

直接将秘钥放在配置文件中也是不安全,可以在项目启动的时候配置秘钥

java -jar xxx.jar -Djasypt.encryptor.password=badaodechengxvyuan

3、编写单元测试生成加密后的数据

为了将配置的明文数据进行加密,需要将数据进行加密

import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.util.Assert;

@SpringBootTest
class JasyptTest {
    /**
     * inject encryption method
     */
    @Autowired
    private StringEncryptor encryptor;

    /**
     * encrypt data
     */
    @Test
    void encrypt() {
        String name = encryptor.encrypt("root");
        String password = encryptor.encrypt("123456");
        System.out.println("name:"+name);
        System.out.println("password:"+password);
        Assert.isTrue(name.length()>0,"name encrypt success");
        Assert.isTrue(password.length()>0,"password encrypt success");
    }
}

这里为了演示只加密了用户名和密码,当然url或者其他需要加密的明文数据都可以。

运行单元测试会输出加密后的字符串数据

 

4、将加密后的数据复制到配置文件yml中对应的位置,并使用ENC()包裹。

# 数据源
spring:
  application:
    name: badao-tcp-demo
  datasource:
   url:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: ENC(Ls/gHnNIUDGsGIRbk+KuKaa2E...)
    password: ENC(rCRmLz/Iiu4INB/3+YKVGxC...)

 

上面包裹的前缀和后缀也可通过配置进行更改,以及更多用法比如自己配置加密算法,

可参考官方文档。

标签:加密,SpringBoot,配置文件,jasypt,spring,password,name
From: https://www.cnblogs.com/badaoliumangqizhi/p/17556055.html

相关文章

  • SpringBoot+Vue3+MySQL集群 开发健康体检双系统
    第1章课程介绍试看4节|38分钟观看项目演示,熟悉大健康体检项目主要功能。掌握学习本课程的最佳方法,以及如何利用在线手册学习和答疑。第2章大健康体检项目全栈环境搭建16节|218分钟利用虚拟机或者云主机安装Linux系统和Docker环境,部署MongoDB、Redis、Minio和RabbitMQ等中......
  • 从零玩转系列之SpringBoot3-核心原理
    一、简介1.前置知识●Java17●Spring、SpringMVC、MyBatis●Maven、IDEA2.环境要求环境&工具版本(orlater)SpringBoot3.1.xIDEA2023.xJava17+Maven3.5+Tomcat10.0+Servlet5.0+GraalVMCommunity22.3+NativeBuildTools0.9.19+......
  • 在Docker上实战ElasticSearch以及与SpringBoot集成
    简介项目地址:https://gitee.com/charlinchenlin/wysmallElasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elastic......
  • SpringBoot整合mybatis(plus)单表查询和多表查询
    SpringBoot整合mybatis(plus)单表查询和多表查询前言mybatis是springboot常用的操作数据库的框架,能够大大简化数据库操作,其可以进行xml配置开发,也可以进行注解开发。虽然现在有mybatis-plus,功能很强大,但也只是简化了单表操作,多表操作甚是麻烦。小型项目怎么用都可以,但是对于大型项......
  • SpringBoot配置文件加密
    大多数的项目都是需要用到配置文件的,配置文件配置了一些必备信息,就比如数据库链接信息,缓存信息,而这些信息以明文的形式写在配置文件中,这是相当危险的,下面我就介绍一种解决方案,通过把配置信息加密放在配置文件中,这样就大大降低了风险。话不多说,直接上案例,代码比什么都管用。1.导入依......
  • springboot 使用caffeine 并监控本地缓存
    1、添加依赖<dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId></dependency> 2、添加配置packagecom.example.demo.config;importcom.github.ben......
  • SpringBoot 服务接口限流,搞定!
    来源:blog.csdn.net/qq_34217386/article/details/122100904  在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。限流可以认为服务降级的一种,限流通过限制请求的流量以达到保护系统的目的。  一般来说,系统的吞吐量是可以计算出一个阈值的,为了保证系统的稳定运......
  • 传奇客户端HeroM2登陆器配置文件说明
    最近一段时间经常有人问我传奇HeroM2登陆器怎么解压到传奇客户端,今天我就来给大家说一下手动编辑!Option.ini文件,编辑后的文件随登陆器一起发布解压到传奇客户端根目录中即可.;以下是!Option中的内容.;此文件需要随登录器一起解压到客户端目录.[Config];任务按钮MissionBtnCaption......
  • 从零玩转系列之SpringBoot3-基础特性
    一、简介1.前置知识​ ●Java17​ ●Spring、SpringMVC、MyBatis​ ●Maven、IDEA2.环境要求环境&工具版本(orlater)SpringBoot3.1.xIDEA2023.xJava17+Maven3.5+Tomcat10.0+Servlet5.0+GraalVMCommunity22.3+NativeBuildTools0......
  • 从零玩转SpringBoot3-快速入门
    一、简介1.前置知识​ ●Java17​ ●Spring、SpringMVC、MyBatis​ ●Maven、IDEA2.环境要求环境&工具版本(orlater)SpringBoot3.1.xIDEA2023.xJava17+Maven3.5+Tomcat10.0+Servlet5.0+GraalVMCommunity22.3+NativeBuildTools0......