SpringBoot集成ENC对配置文件进行加密

在线MD5生成工具

配置文件加密,集成ENC

  1. 引入POM依赖

     <!-- ENC配置文件加密 -->
        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>
    
  2. 【注意】开始使用的3.1.5版本,启动报错:Reason: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.redis.password' to java.lang.String

    报错原因:因为3.x版本的默认加密算法变了,所以对应配置文件加密算法配置得修改,同时加密的方法也得用新的加密算法计算出加密字符串。

  3. 使用工具类对明文数据进行加密处理,使用完后为了安全起见,可以删除加密盐值

    package com.basic.test;
    
    import org.jasypt.util.text.BasicTextEncryptor;
    import org.junit.Test;
    
    /**
     * ClassName: CryptTest
     * Package: com.basic.test
     * Description:
     *
     * @Author 王涵
     * @Date 2024/12/17 14:18
     * @Version 1.0
     */
    public class CryptTest {
    
        /**
         * 加密盐值,使用完成后进行删除,或者不能提交到`生产环境`,比如:
         */
        private final static String PASSWORD = "basic";
    
        @Test
        public void encTest() {
            BasicTextEncryptor encryptor = new BasicTextEncryptor();
            // 用于设置加密密钥。密钥是用于加密和解密字符串的关键信息。
            encryptor.setPassword(PASSWORD);
    
            // 明文1
            String name_encrypt = "wwwbaiducom";
            // 明文2
            String password_encrypt = "123456";
    
            // 明文加密
            String encrypt1 = encryptor.encrypt(name_encrypt);
            String encrypt2 = encryptor.encrypt(password_encrypt);
            System.out.println("明文加密1:" + encrypt1);
            System.out.println("明文加密2:" + encrypt2);
    
            // 密文解密
            String decrypt1 = encryptor.decrypt(encrypt1);
            String decrypt2 = encryptor.decrypt(encrypt2);
            System.out.println("密文解密1:" + decrypt1);
            System.out.println("密文解密2:" + decrypt2);
        }
    }
    
  4. 将加密后的密码配置到配置文件,使用ENC()包裹。不需要ENC时可以直接写密码,不用ENC包裹即可

 # 主库数据源
 master:
     url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
     username: root
     password: ENC(dboFmyYdJOKJYKt1DX/jmzPBcipbHHeP)
  1. 运行时配置

    1. 打开Run/Debug Configuratios
      在这里插入图片描述

    2. 打开Modify options选择Add VM Optiosn

    3. 配置VM Options为自己的加密盐值
      在这里插入图片描述

  2. 启动类配置@EnableEncryptableProperties

    package com.basic;
    
    import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    
    /**
     * @Author WangHan
     * 心中那自由的世界,如此的清澈高远。
     * @Date 2024/12/6 14:47
     * @Description 启动程序
     */
    @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
    @EnableEncryptableProperties
    public class BasicApplication
    {
        public static void main(String[] args)
        {
            // 热部署生效 true 开启热部署 false 关闭热部署
            System.setProperty("spring.devtools.restart.enabled", "false");
            SpringApplication.run(BasicApplication.class, args);
            System.out.println("(♥◠‿◠)ノ゙  基础框架启动成功   ლ(´ڡ`ლ)゙");
        }
    }
    
  3. jar包运行指定加密规则

    cd /opt/home/test/
    nohup java -Xms512m -Xmx512m -jar -Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX test-base.jar --spring.profiles.active=dev > test-base.out 2>&1 &
    echo start test-base		
    
  4. 部署到tomcat

    export JAVA_OPTS="-Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX"
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET|日常开发中数据集合详解

ASP.NET&#xff5c;日常开发中数据集合详解 前言一、数组&#xff08;Array&#xff09;1.1 定义和基本概念1.2 数组的操作 二、列表&#xff08;List<T>&#xff09;2.1 特点和优势2.2 常用操作 三、字典&#xff08;Dictionary<K, V>&#xff09;3.1 概念和用途…

金融信息系统多活技术-应用策略

目录 概述 ​编辑 多活应用场景 流水型系统 账户型系统 流水型系统应用策略 业务模型说明 系统并行策略 接入和路由策略 系列阅读 概述 本文件提出了金融信息系统多活技术的应用指南&#xff0c;金融机构可根据自身业务需要&#xff0c;结合本文件进行 多活信息系统的…

大数据之Hbase环境安装

Hbase软件版本下载地址&#xff1a; http://mirror.bit.edu.cn/apache/hbase/ 1. 集群环境 Master 172.16.11.97 Slave1 172.16.11.98 Slave2 172.16.11.99 2. 下载软件包 #Master wget http://archive.apache.org/dist/hbase/0.98.24/hbase-0.98.24-hadoop1-bin.tar.gz…

人工智能ACA(四)--机器学习基础

零、参考资料 一篇文章完全搞懂正则化&#xff08;Regularization&#xff09;-CSDN博客 一、 机器学习概述 0. 机器学习的层次结构 学习范式&#xff08;最高层&#xff09; 怎么学 监督学习 无监督学习 半监督学习 强化学习 学习任务&#xff08;中间层&#xff0…

HTML语法规范

HTML语法规则 HTML 标签是由尖括号包围的关键词&#xff0c;标签通常是成对出现的&#xff0c;例如 <html> 和 </html>&#xff0c;称为双标签 。标签对中的第一个标签是开始标签&#xff0c;第二个标签是结束标签单标签比较少&#xff0c;例如<br />&#x…

四川托普信息技术职业学院教案1

四川托普信息技术职业学院教案 【计科系】 周次 第 1周&#xff0c;第1次课 备 注 章节名称 第1章 XML语言简介 引言 1.1 HTML与标记语言 1.2 XML的来源 1.3 XML的制定目标 1.4 XML概述 1.5 有了HTML了&#xff0c;为什么还要发展XML 1.5.1 HTML的缺点 1.5.2 XML的特点 1.6 X…

Win10将WindowsTerminal设置默认终端并添加到右键(无法使用微软商店)

由于公司内网限制&#xff0c;无法通过微软商店安装 Windows Terminal&#xff0c;本指南提供手动安装和配置新版 Windows Terminal 的步骤&#xff0c;并添加右键菜单快捷方式。 1. 下载新版终端安装包: 访问 Windows Terminal 的 GitHub 发布页面&#xff1a;https://githu…

OpenAI发布新一代推理模型O3和O3 Mini:能力与性能的双重突破

2024年12月21日&#xff0c;OpenAI通过一场特别活动正式宣布了其新一代推理模型O3及其轻量化版本O3 Mini。这标志着AI推理能力和效率的又一次飞跃。本文将围绕发布会中的关键内容&#xff0c;详细介绍O3和O3 Mini的核心能力、性能表现、以及面向公众安全测试的相关计划。 1. 背…

VScode插件之get、set函数自动生成

文章目录 VScode插件之get、set函数自动生成插件名称现有功能功能快捷键使用总结与部分插件的get、set生成对比部分实现效果展示部分实现思路 VScode插件之get、set函数自动生成 初次尝试插件的编写开发&#xff0c;这篇博客也是对自己成果的一个记录&#xff0c;如有不足请指…

【Lua热更新】上篇

Lua 热更新 - 上篇 下篇链接&#xff1a;【Lua热更新】下篇 文章目录 Lua 热更新 - 上篇一、AssetBundle1.理论2. AB包资源加载 二、Lua 语法1. 简单数据类型2.字符串操作3.运算符4.条件分支语句5.循环语句6.函数7. table数组8.迭代器遍历9.复杂数据类型 - 表9.1字典9.2类9.3…

完全二叉树的权值(蓝桥杯2019年试题G)

给定一棵包含N个节点的完全二叉树&#xff0c;树上的每个节点都有一个权值&#xff0c;按从上到小、从左到右的顺序依次是A1、A2……An,&#xff08;1&#xff0c;2&#xff0c;n为下标。&#xff09;如下图所示。 现在&#xff0c;小明要把相同深度的节点的权值加到一起&#…

时间管理系统|Java|SSM|JSP|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

前端yarn工具打包时网络连接问题排查与解决

最近线上前端打包时提示 “There appears to be trouble with your network connection”&#xff0c;以此文档记录下排查过程。 前端打包方式 docker启动临时容器打包&#xff0c;命令如下 docker run --rm -w /app -v pwd:/app alpine-node-common:v16.20-pro sh -c "…

harmony UI组件学习(1)

Image 图片组件 string格式&#xff0c;通常用来加载网络图片&#xff0c;需要申请网络访问权限:ohos.permission.INTERNET Image(https://xxx.png) PixelMap格式&#xff0c;可以加载像素图&#xff0c;常用在图片编辑中 Image(pixelMapobject) Resource格式&#xff0c;加…

mac 安装graalvm

Download GraalVM 上面链接选择jdk的版本 以及系统的环境下载graalvm的tar包 解压tar包 tar -xzf graalvm-jdk-<version>_macos-<architecture>.tar.gz 移入java的文件夹目录 sudo mv graalvm-jdk-<version> /Library/Java/JavaVirtualMachines 设置环境变…

14-zookeeper环境搭建

0、环境 java&#xff1a;1.8zookeeper&#xff1a;3.5.6 1、下载 zookeeper下载点击这里。 2、安装 下载完成后解压&#xff0c;放到你想放的目录里。先看一下zookeeper的目录结构&#xff0c;如下图&#xff1a; 进入conf目录&#xff0c;复制zoo_sample.cfg&#xff0…

如何使用Python处理视频合成

使用 Python 处理视频合成可借助 MoviePy 库&#xff0c;以下是具体步骤&#xff1a; 安装 MoviePy 通过 pip 命令安装&#xff0c;即 pip install moviepy&#xff0c;需确保已安装 ffmpeg&#xff0c;并正确设置环境变量&#xff0c;因为 MoviePy 依赖它来处理视频. 基本合…

存储过程 与 存储函数的区别及用法 及 触发器 !!!

引言&#xff1a; 存储函数和存储过程&#xff0c;作为数据库中的预编译代码块&#xff0c;能够封装复杂的业务逻辑和数据处理流程&#xff0c;使得数据库操作更加简洁、易读和可维护。而触发器&#xff0c;则像是一个智能的守卫&#xff0c;能够在特定事件发生时自动执行预设的…

用nginx部署两个前端(超简单,三步!)

1.首先在nginx的html目录下创两个文件夹分别用于放两个前端打包好的静态资源&#xff0c;并且把静态资源各自放好&#xff1a; 2. 在nginx的配置文件里&#xff0c;写好两个server。如图&#xff0c;写好两个前端要用的端口以及刚才那两文件夹的路径&#xff1a; worker_proces…

level2逐笔委托查询接口

沪深逐笔委托队列查询 前置步骤 分配数据库服务器 查询模板 以下是沪深委托队列查询的请求模板&#xff1a; http://<数据库服务器>/sql?modeorder_book&code<股票代码>&offset<offset>&token<token>查询参数说明 参数名类型说明mo…