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

场景

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

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

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

方式。

jasypt-spring-boot

GitHub - ulisesbocchio/jasypt-spring-boot: Jasypt integration for Spring boot

Jasypt-Spring-Boot: Jasypt Spring Boot 为 Spring Boot 项目中的属性源提供加密支持

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主

实现

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*/@Autowiredprivate StringEncryptor encryptor;/*** encrypt data*/@Testvoid 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-demodatasource:url:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: ENC(Ls/gHnNIUDGsGIRbk+KuKaa2E...)password: ENC(rCRmLz/Iiu4INB/3+YKVGxC...)

 

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

可参考官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

紧跟国家“新能源+”模式!涂鸦智慧能源方案助力夏季用电节能提效

“今天的你是几分熟&#xff1f;” 今年夏天&#xff0c;高温来得比往年更早&#xff0c;五六月份就提前开启了滚滚热浪模式&#xff0c;京津冀和山东等地最高气温也一度突破了历史极值。在提前到来的高温“烤”验下&#xff0c;全社会供电能力面临着极大挑战。 中国电力网预…

Spring

getBean()方法使用 其中&#xff0c;当参数的数据类型是字符串时&#xff0c;表示根据Bean的id从容器中获得Bean实例&#xff0c;返回是Object&#xff0c;需要强转。 当参数的数据类型是Class类型时&#xff0c;表示根据类型从容器中匹配Bean实例&#xff0c;当容器中相同类型…

手机定屏死机问题操作指南

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、定屏死机问题抓取 Log 要求二、 复现定屏死机问题后做什么三、检查adb是否可连的方法四、连接adb 抓取以下Log五、如果adb不可连&#xff0c;执行下…

reggie优化06-项目部署

1、部署架构 2、部署环境 3、部署前端 4、部署后端 修改图片位置&#xff0c;并push至仓库

C语言的UDP多线程点对点发送消息

windows下使用Dev C调试 Server段&#xff1a; /** * 编译命令&#xff1a;gcc udps.c -lws2_32 -lmycon -lwinmm -o us.exe */ #include <stdio.h> #include <winsock2.h> #include <mycon.h>struct sockaddr_in serveraddr; struct sockaddr_in clien…

全域Serverless化,华为云引领下一代云计算新范式

近日&#xff0c;华为开发者大会2023&#xff08;Cloud&#xff09;在东莞成功举办&#xff0c;期间“全域Serverless化&#xff0c;引领下一代云计算新范式”专题论坛人气满满。华为云首席产品官方国伟携手业界专家、客户、伙伴&#xff0c;面向广大开发者&#xff0c;分享了在…

【Docker】Docker基本管理命令

目录 一、Docker概述1.1容器化受欢迎的原因1.2Docker核心概念 二、安装 Docker2.1环境准备 三、Doker镜像操作镜像操作选项 四 、Docker 容器操作容器操作选项 一、Docker概述 Docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵循了apache2.0协议开源。 Docker是…

HTTP1.1、HTTPS、HTTP2.0 、HTTP3.0

HTTP1.1 优点&#xff1a; 整体方面&#xff1a;简单、灵活和易于扩展、应用广泛和跨平台 性能方面&#xff1a;长连接、管道网络传输解决请求队头阻塞&#xff08;没有使用&#xff09; 缺点&#xff1a; 安全方面&#xff1a;无状态、明文窃听、伪装、篡改 性能方面&am…

HTML <meter> 标签

实例 使用 meter 元素来度量给定范围(gauge)内的数据: <meter value="3" min="0" max="10">十分之三</meter><meter value="0.6">60%</meter> 浏览器支持 元素ChromeIEFirefoxSafariOpera<meter>8…

JavaWeb课程设计项目实战(03)——开发准备工作

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在正式进入项目开发之前请先完成以下准备工作。 数据库语句 请创建数据库和表并完成数据初始化工作。 初始化数据库 请在MySQL数据库中创建名为studentinformationmanag…

文心一言 VS 讯飞星火 VS chatgpt (59)-- 算法导论6.4 3题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;59&#xff09;-- 算法导论6.4 3题 三、对于一个按升序排列的包含 n 个元素的有序数组 A 来说&#xff0c;HEAPSORT 的时间复杂度是多少?如果 A 是降序呢? 文心一言&#xff1a; 对于一个按升序排列的包含 n 个元素的有序数组…

ffmpeg将视频导出iphonemp4格式

对于短视频的剪辑&#xff0c;目前来说手机性能足够&#xff0c;现在很多家庭如果没有前几年的网课需求基本也不会买电脑。 将mp4视频导入iphone的时候&#xff0c;mp4是容器格式&#xff0c;不是所有mp4格式都支持。用格式工厂一类的转换太慢。所以考虑用ffmpeg。 转换 wmv转…

Spring Boot进阶(54):Windows 平台安装 MongoDB数据库 | 超级详细,建议收藏

1. 前言&#x1f525; Windows如何安装MongoDB数据库及使用呢&#xff1f;这将又会是干货满满的一期&#xff0c;全程无尿点不废话只抓重点教&#xff0c;具有非常好的学习效果&#xff0c;拿好小板凳准备就坐&#xff01;希望学习的过程中大家认真听好好学&#xff0c;学习的途…

Android系统开发-入门篇

参见&#xff1a;[视频教程] 写给应用开发的 Android Framework 教程——玩转 AOSP 篇之 Android 系统开发工具推荐 - 掘金 前置条件&#xff1a; android系统源码位于 linux 服务器&#xff0c;ssh 地址假如为&#xff1a;test172.1.10.2本机为windows 1、本机&#xff1a; 下…

python爬虫试手

同事让帮忙在某个网站爬点数据&#xff0c;首次尝试爬虫&#xff0c;遇到的问题及解决思路记录下。 大体需求是需要爬取详情页内的信息&#xff0c;详情页有一定格式规律&#xff0c;但是详情页需要从列表页跳入&#xff0c;列表页中的每一条记录需要鼠标悬停才会弹出跳转链接…

【课程介绍】XPath 之旅:自动化爬虫入门探索

[ 专栏推荐 ] &#x1f603; 《XPath 之旅&#xff1a;自动化爬虫入门探索》&#x1f604; ❤️【简介】&#xff1a; XPath 基础教程适合初学者&#xff0c;旨在帮助学习者掌握 XPath 元素定位的基本原理和常用技巧。学习完这套课程&#xff0c;你将能够熟练使用 XPath 在 HT…

深入理解mysql的锁和mvcc

基础 1 锁讲解&#xff1a;面试必备-行锁、表锁 - 乐观锁、悲观锁的区别和联系 2 mvcc机制讲解&#xff08;如何实现各种隔离级别&#xff09;&#xff1a;数据库基础&#xff08;四&#xff09;Innodb MVCC实现原理 刚读完上面两篇内容&#xff0c;可能会有很多疑惑的地方&…

repo和git的常用命令

repo 简介 repo是Google开发的用于管理Android版本库的一个工具&#xff0c;repo是使用Python对git进行了一定的封装&#xff0c;并不是用于取代git&#xff0c;它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。因此&#xff0c;使用repo工具…

k8s证书到期实际操作

文章目录 1. 百年的kubeadm1.1 源码修改1.2 准备镜像1.3 编译1.4 成品备份 2. 生成证书2.1 master主节点2.2 其他master节点 1. 百年的kubeadm 1.1 源码修改 源码下载 cd /usr/local/src/ git clone -b release-1.15 https://github.com/kubernetes/kubernetes.git再次确认分…

【Java基础教程】Java学习路线攻略导图——史诗级别的细粒度归纳,持续更新中 ~

Java学习路线攻略导图 上篇 前言1、入门介绍篇2、程序基础概念篇3、包及访问权限篇4、异常处理篇5、特别篇6、面向对象篇7、新特性篇8、常用类库篇 前言 &#x1f37a;&#x1f37a; 各位读者朋友大家好&#xff01;得益于各位朋友的支持和关注&#xff0c;我的专栏《Java基础…