spring-boot项目使用ulisesbocchio对配置文件敏感信息加密

2023-11-12

参考文献github官网地址:https://github.com/ulisesbocchio/jasypt-spring-boot

1、添加依赖:

maven:

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

低版本依赖

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

gradle依赖:

implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.2' 

2、自定义加密盐值,生成加密结果 

public static void main(String[] args) {
    BasicTextEncryptor encryptor = new BasicTextEncryptor();
    // application.properties, jasypt.encryptor.password 加密盐值
    encryptor.setPassword("qwera@12345");
    // 加密数据库连接地址
    System.out.println(encryptor.encrypt(
        "jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=UTC"));
    // 加密数据库连接用户名
    System.out.println(encryptor.encrypt("user"));
    // 加密数据库连接密码
    System.out.println(encryptor.encrypt("123456"));
    // 加密ip地址
    System.out.println(encryptor.encrypt("127.0.0.1"));
}

 运行之后得到以下加密结果:

SXyQdsRMPeCNvzqG+9CHCfBJ8I5WG0FK3QK/oh3Ty+9cD2x46TFx6qeil9i8+HJM+v6aJPF5+cPfXNcK9RZz8pj5vETgOLv6WN41zTnXmsx4MrtGbjmVpDOnVKtGh3aR8BRM7bH1/CN2letqQYpkbAFUErtEkrrVNhRwN9whalZmv4MZP2rBmyeVYaDqEBuEDcV4u2Kbl0bdAN4Tn5LRzu+7sDOP37nDTTwdOTOdU3gYGe3OodLSuw==
4FEc3689+yRuKK0uKSzuwQ==
0T6wU363Jnd0wC2q7LittA==
S6Ndyo6uDMMwwzHiiLjPW+sArf+r9qsA

3、将结果敏感信息替换成加密后的结果

 加密结果需要将ENC(*)包含加密值,Spring加载时会自动解析

jasypt:
  encryptor:
    # 加密盐值 必须和生成的盐值一样
    password: qwera@12345
    # 加密算法设置 3.0.0 以后需要加上下面两个配置
  # algorithm: PBEWithMD5AndDES
  # iv-generator-classname: org.jasypt.iv.NoIvGenerator
spring:
  profiles:
    active: local
  application:
    name: demo
  datasource:
    url: ENC(SXyQdsRMPeCNvzqG+9CHCfBJ8I5WG0FK3QK/oh3Ty+9cD2x46TFx6qeil9i8+HJM+v6aJPF5+cPfXNcK9RZz8pj5vETgOLv6WN41zTnXmsx4MrtGbjmVpDOnVKtGh3aR8BRM7bH1/CN2letqQYpkbAFUErtEkrrVNhRwN9whalZmv4MZP2rBmyeVYaDqEBuEDcV4u2Kbl0bdAN4Tn5LRzu+7sDOP37nDTTwdOTOdU3gYGe3OodLSuw==)
    username: ENC(4FEc3689+yRuKK0uKSzuwQ==)
    password: ENC(0T6wU363Jnd0wC2q7LittA==)
    driver-class-name: com.mysql.cj.jdbc.Driver

4、加密结果与加密盐值隔离

项目加密配置到这里也就基本完成了,但是为了保证加密数据和加密盐值数据隔离还需采取进一步措施,以确保数据的安全性

注释:加密盐值不应该直接放在代码中,容易造成开发人员泄露数据安全性

Windows启动java虚拟机配置VM options参数,我这里默认是配置3.0.0以上的jar包,如版本低可将后面参数移除掉

配置了虚拟机启动参数,其实和配置yml是一样的,也同样会加载到spring配置文件中,配置成功(此时可将配置文件的加密盐值配置删除掉),

启动Spring同样会成功连接到数据库。

 服务器中配置,同理将java启动虚拟机参数新增配置,这样我们密码盐值就放在了服务器中,就不会造成加密盐值泄漏了

JAVA_OPTS="-Djasypt.encryptor.password=qwera@12345 -Djasypt.encryptor.algorithm=PBEWithMD5AndDES -Djasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator"

 

到这里,配置加密敏感信息应该才算完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring-boot项目使用ulisesbocchio对配置文件敏感信息加密 的相关文章

随机推荐

  • MiniUI 的知识积累

    1 默认选中树的根节点 var tree mini get tree 1 tree selectNode tree getRootNode children 0 2 表格修改列头名称 div class mini fit div class
  • novel Ai (stable-diffusion-webui)安装

    关于novel ai的本地化安装 环境 英伟达显卡 win11 可以连接github并下载内容 安装 python 3 10 6及以上 安装并添加到path 安装cuDNN和CUDAToolKit 先更新主机的显卡驱动 检查系统的显卡驱动版
  • Java如何进行内存分配

    Java 虚拟机 JVM 负责管理 Java 应用程序的内存 在 Java 中 内存被划分为不同的区域 每个区域都有不同的用途 Java 中有两种主要的内存区域 堆和栈 功能 1 堆 堆是存储所有对象实例的内存区域 所有对象实例都存储在堆中
  • React之中的styled-components

    在react之中使用css不像vue之中那么方便 react官方也没有很统一的用法 下面是有关于styled component的使用 1 安装库 yarn add styled components 2 基本使用 在其中styled di
  • 深度学习中的epoch,batchsize,iteration都是什么?

    转载 https www jianshu com p e5076a56946c 一切的一切 要从机器学习中的梯度下降法说起 首先让我们来回顾一下这个常见的不能再常见的算法 梯度下降法是机器学习中经典的优化算法之一 用于寻求一个曲线的最小值
  • wxWidgets with quick-x

    前言 OSX下 Qt5 所生成应用包的大小有七八十兆大小 单独一个 debug 版本的可执行程序都有 15 7MB 再加上 QtCore QtGui QtOpenGL 等 framework 包大小分分钟上来 曾经发布过的 Qt5 2 qu
  • 微信公众号实现“一键关注”功能

    背景 之前用的一键关注要么通过图文 要么通过二维码 这样甚是麻烦 而且引导不到位 而看到朋友圈打广告的一些公众号可以直接关注 于是一直研究这个功能 今天终于实现了 分享给所有朋友 希望能帮助到所有朋友 这个引导关注的页面包含了公众号的log
  • 密码学之哈希算法

    1 哈希算法 哈希算法是将任意长度的二进制值映射为较短的固定长度的二进制值 这个小的二进制值称为哈希值 哈希值是一段数据唯一且极其紧凑的数值表示形式 如果散列一段明文而且哪怕只更改该段落的一个字母 随后的哈希都将产生不同的值 要找到散列为同
  • 滑动关机BAT脚本

    滑动关机脚本 1 脚本功能 增加一个一键关机的功能 点击这个按钮 即可滑动关闭电脑 非常酷炫好用 2 脚本内容 slidetoshutdown 3 使用方式 新建slideDown bat文件 编辑 把上面的脚本内容粘贴进去 然后双击执行s
  • MySQL(十三):分区表( Partitioning Table)

    文章目录 1 MySQL 分区简介 1 1 什么是分区表 1 2 分区表优点 1 3 分区表缺点 2 MySQL 分区类型 2 1 范围分区 RANGE 2 1 1 基于时间间隔的分区方案 2 1 1 1 按 RANGE 对表进行分区 2
  • Maven项目版本定义

    Maven使用占位符实现一处定义项目版本 使用 revision 定义整个项目的版本 方便修改 父pom
  • Java实现杨辉三角

    代码实现 package day01 public class yanghui public static void main String args 声明二维数组并初始化 int yanghui new int 10 给二维数组赋值 fo
  • jsp 新能源汽车论坛网Myeclipse开发mysql数据库web结构java编程计算机网页项目

    一 源码特点 JSP 新能源汽车论坛网是一套完善的java web信息管理系统 对理解JSP java编程开发语言有帮助 系统具有完整的源代码和数据库 系统主要采用B S模式开发 开发环境为 TOMCAT7 0 Myeclipse8 5开发
  • 《如何为Android Studio安装HAXM》

    注意 当你在Android studio直接下载sdk和HAXM一些安卓环境依赖的文件时 会出现haxm文件已经下载 但未安装 导致启动avd模拟器不成功 如下图 emulator64 x86 avd 32 QVGA ADP2 API 25
  • Python爬虫实战——搭建自己的IP代理池

    如今爬虫越来越多 一些网站网站加强反爬措施 其中最为常见的就是限制IP 对于爬虫爱好者来说 能有一个属于自己的IP代理池 在爬虫的道路上会减少很多麻烦 环境参数 工具 详情 服务器 Ubuntu 编辑器 Pycharm 第三方库 reque
  • sql增删改查_Zhuo笔记:使用C#链接SQL数据库并进行增删改查操作

    一 首先使用SQL语句在建立数据库及表 二 在C 中做一个简单窗口以便对SQL数据库进行操作 三 编写代码进行SQL链接 1 C 访问SQL SERVER首先需要引用using System Data 和usingSystem Data S
  • 芯片IO口Driving能力(Sourcing Current)测试方法

    PMOS管测试步骤 Drive High Ability 1 将IO PAD配置成output模式 DUT供电电压为可正常工作的最低电压 如依datasheet允许 下降10 3 3V gt 2 97V 等 2 将IO PAD配置成最大Dr
  • 图文详解GPT-4最强对手Claude2的使用方法

    大家好 我是herosunly 985院校硕士毕业 现担任算法研究员一职 热衷于机器学习算法研究与应用 曾获得阿里云天池比赛第一名 CCF比赛第二名 科大讯飞比赛第三名 拥有多项发明专利 对机器学习和深度学习拥有自己独到的见解 曾经辅导过若
  • 基于粒子群算法优化LSTM的多输入单输出台风风电功率预测

    基于粒子群算法优化LSTM的多输入单输出台风风电功率预测 随着风电产业的快速发展 风电场的管理和运行越来越依赖于准确的风速信息和风力预测 因此 台风风电功率预测的研究变得越来越重要 在本文中 我们将使用粒子群算法 PSO 来优化长短期记忆网
  • spring-boot项目使用ulisesbocchio对配置文件敏感信息加密

    参考文献github官网地址 https github com ulisesbocchio jasypt spring boot 1 添加依赖 maven