SpringBoot中对数据库连接配置信息进行加密处理

ops/2024/9/23 6:15:04/

1 在项目中加密

1.1 导包

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

1.2 加密

配置文件

jasypt:encryptor:password: study-demoalgorithm: PBEWithMD5AndDESiv-generator-classname: org.jasypt.iv.NoIvGenerator

获取配置文件信息

package com.sky.properties;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** 应用配置信息** @author wangs* @date 2024/9/21 14:18*/
@Data
@Component
@ConfigurationProperties(value = "jasypt.encryptor")
public class AppProperties {/*** 加密盐值*/private String password;
}

加密代码

package com.sky;import com.sky.properties.AppProperties;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import javax.annotation.Resource;@SpringBootTest(classes = SkyApplication.class)
@RunWith(SpringRunner.class)
public class EncryptorTest {/*** MySQL连接信息*/private final static String HOST_NAME = "主机IP";private final static String USERNAME = "数据库用户名";private final static String PASSWORD = "数据库密码";@Resourceprivate AppProperties appProperties;/*** 加密MySQL数据库*/@Testpublic void mysqlEncryptorTest() {StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();// 加密盐值encryptor.setPassword(appProperties.getPassword());String host = encryptor.encrypt(HOST_NAME);String username = encryptor.encrypt(USERNAME);String password = encryptor.encrypt(PASSWORD);System.out.println("host密文:"+host);System.out.println("username密文:"+ username);System.out.println("password密文:"+password);}
}

1.3 修改配置文件

将 1.2 中生成的密文替换配置文件中的明文信息

  datasource:driver-class-name: com.mysql.cj.jdbc.Driverhost: ENC(5+NRySB3LIsgOI2IEFrLaAt96lB0kvyK)port: 3306database: xxx_xxx_xxxusername: ENC(27L2N1KZZnJWGfYjIXRLcA==)password: ENC(f9Dc9EY6TQqmPMqARsO5/g==)

1.4 问题解决

在使用过程中,遇到了一个问题

failed to bind properties under spring.datasource.druid.password' to java.lang.String

出现这个问题的时候,在配置文件中,我并没有加上最后面的两行,加上后解决问题

jasypt:encryptor:password: study-demoalgorithm: PBEWithMD5AndDESiv-generator-classname: org.jasypt.iv.NoIvGenerator

2 参考博客

数据库加密:数据库连接加密(SpringBoot+jasypt加密)

问题报错:springboot - 解决jasypt failed to bind properties - 30岁程序员的挣扎之路 - SegmentFault 思否


http://www.ppmy.cn/ops/114618.html

相关文章

网络安全-LD_PRELOAD,请求劫持

目录 一、环境 二、开始做题 三、总结原理 四、如何防护 一、环境 我们这里用蚁剑自带的靶场第一关来解释 docker制作一下即可 二、开始做题 首先环境内很明显给我们已经写好了webshell 同样我们也可以访问到 我们使用这个蚁剑把这个webshell连上 我们发现命令不能执行&am…

python基础题练习

1.可否定义一个sum函数呢&#xff1f;返回指定区间的值的和&#xff1f;例如&#xff0c;区间[1,4]的和为123410返回指定区间值的平方的和呢&#xff1f;立方呢&#xff1f; 代码&#xff1a; # 计算从start到end&#xff08;包括end&#xff09;的所有整数的和。 def sum_ra…

【机器学习】——线性回归(自我监督学习)

文章目录 1. 线性回归的定义2. 线性回归的模型3. 线性回归的核心思想4. 线性回归的求解5. 线性回归的假设6. 模型评估7. 线性回归的优缺点8. 线性回归的扩展9. 线性回归的实际应用10. 示例代码&#xff08;Python实现&#xff09; 线性回归详细介绍 1. 线性回归的定义 线性回归…

C++:动态内存分配(new、delete 相比 malloc、free的优势)与运算符重载

动态内存分配与运算符重载 一、动态内存分配&#xff08;一&#xff09;内存的分类&#xff08;二&#xff09;动态内存分配函数(1)new 和delete 的使用&#xff08;1&#xff09;new 的原理&#xff08;2&#xff09;delete 的原理 2、 operator new与operator delete&#xf…

深度学习-生成式检索-论文速读-2024-09-14

深度学习-生成式检索-论文速读-2024-09-14 前言: 生成式检索&#xff08;Generative Retrieval&#xff0c; GR&#xff09;是一种结合了生成模型和检索系统的人工智能技术方法。这种方法在处理信息检索任务时&#xff0c;不仅依赖于已有数据的检索&#xff0c;还能生成新的、…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 3 获取AAID

AAID&#xff08;Anonymous Application Identifier&#xff09;&#xff1a;应用匿名标识符&#xff0c;标识运行在移动智能终端设备上的应用实例&#xff0c;只有该应用实例才能访问该标识符&#xff0c;它只存在于应用的安装期&#xff0c;总长度32位。与无法重置的设备级硬…

nginx upstream转发连接错误情况研究

本次测试用到3台服务器&#xff1a; 192.168.10.115&#xff1a;转发服务器A 192.168.10.209&#xff1a;upstream下服务器1 192.168.10.210&#xff1a;upstream下服务器2 1台客户端&#xff1a;192.168.10.112 服务器A中nginx主要配置如下&#xff1a; log_format main…

Springboot 文件上传下载相关问题

文章目录 关于Springboot 文件上传下载问题解决方案注意事项文件上传文件下载文件删除文件在线打开在写练习的时候&#xff0c;发现了一些小小的问题&#xff0c;已经在 上述代码中体现。① 代码路径碰到中文的时候&#xff0c;会有乱码&#xff0c;需要转换&#xff08;内容中…