当前位置: 首页 > wzjs >正文

建设银行的网站为什么这么卡湘潭市优化办

建设银行的网站为什么这么卡,湘潭市优化办,网店哪个平台好,医学ppt模板免费下载SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密) 前言 在SpringBoot的项目开发中,大多数情况下 yml 配置文件中存储的密码均以明文形式展示,这种方式显然存在较大的安全隐患。一旦有开发人员离职&…

SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)

前言
在SpringBoot的项目开发中,大多数情况下 yml 配置文件中存储的密码均以明文形式展示,这种方式显然存在较大的安全隐患。一旦有开发人员离职,其可能会利用掌握的密码信息进行不当操作,从而对系统安全造成威胁。因此,为了提升系统的安全性,我们有必要对配置文件中的敏感信息(如密码)进行加密处理。

通过加密,只有特定的人员(例如领导、架构师或技术经理)知晓解密所需的密钥,而普通开发人员无法直接获取到明文密码。这样不仅可以有效降低因密码泄露带来的风险,还能更好地保护系统的敏感数据,确保信息安全可控。这一措施不仅符合最佳安全实践,也是企业安全管理的重要一环。

一、Jasypt 简介

Jasypt 是一个用于 Java 的简易加密库,它允许开发者以最小的努力为项目添加基本的加密功能,而无需深入了解密码学的工作原理。Jasypt 提供了多种加密算法,并且可以与 Spring Boot 无缝集成,使得开发者能够轻松地对配置文件中的敏感信息进行加密。


二、环境准备

在开始之前,请确保已经安装并配置好了以下工具和环境:

  • JDK 8 或更高版本
  • Maven 或 Gradle 构建工具
  • IntelliJ IDEA 或其他 IDE
  • Spring Boot 项目

三、步骤详解

1. 引入 Jasypt 依赖

pom.xml 文件中添加 Jasypt 的依赖:

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

注意:如果你使用的是 JDK 8,请确保选择适合的 Jasypt 版本(通常是 2.x),而对于 JDK 9 及以上版本,则应选择 3.x 版本。


2. 配置秘钥与测试

为了保证安全性,我们需要设置一个加密密钥,该密钥将用于加密和解密敏感信息。
接下来,我们需要对敏感信息(如数据库密码)进行加密。可以通过编写一个简单的工具类来完成这一任务。

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class JasyptTest {@Testpublic void testPwdEncrypt() {// 实例化加密器StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();// 配置加密算法和秘钥EnvironmentPBEConfig config = new EnvironmentPBEConfig();config.setAlgorithm("PBEWithMD5AndDES");    // 设置加密算法,默认的config.setPassword("lvdamao");      // 用于加密的秘钥(盐),可以是随机字符串,一定要记住并且存储好encryptor.setConfig(config);// 对自己的密码进行加密String myPwd = "huang3978850";String encryptedPwd = encryptor.encrypt(myPwd);System.out.println("++++++++++++++++++++++++++++++");System.out.println("+ 原密码为:" + myPwd);System.out.println("+ 加密后的密码为:" + encryptedPwd);System.out.println("++++++++++++++++++++++++++++++");// 备注:此方式也可以用于账号密码登录的加盐操作}//    m4g9wdfnu4gMiWbCRGZjnF4T80NFO4yC@Testpublic void testPwdDecrypt() {// 实例化加密器StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();// 配置加密算法和秘钥EnvironmentPBEConfig config = new EnvironmentPBEConfig();config.setAlgorithm("PBEWithMD5AndDES");    // 设置加密算法,默认的config.setPassword("lvdamao");      // 用于加密的秘钥(盐),可以是随机字符串,一定要记住并且存储好encryptor.setConfig(config);String pendingPwd = "m4g9wdfnu4gMiWbCRGZjnF4T80NFO4yC";String myPwd = encryptor.decrypt(pendingPwd);System.out.println("++++++++++++++++++++++++++++++");System.out.println("+ 解密后的密码为:" + myPwd);System.out.println("++++++++++++++++++++++++++++++");}
}

执行测试加密程序,获得加密后的字符串
例如:
秘钥:lvdamao,密码:lvdamaoluguo,加密后:q+diStq05V6enG/Dcvcc6kPk0f8vc0Ii

在这里插入图片描述
在这里插入图片描述

将秘钥lvdamao和加密后的字符串q+diStq05V6enG/Dcvcc6kPk0f8vc0Ii填入第二段测试代码进行解密测试:
成功得到原始密码lvdamaoluguo则表示成功

在这里插入图片描述

使用思路:可以给项目经理或者架构师使用此工具,通过秘钥和原始密码(例如数据库密码),获取到一个新的加密后的字符串,后续其他项目开发人员只能拿到加密字符串对数据库进行连接,从而有效的减少了数据库密码的暴露风险

3.2 修改配置文件

找到项目的启动文件所在模块,修改application.yml配置文件
设置jasypt和秘钥lvdamao

jasypt:encryptor:algorithm: PBEWithMD5AndDESpassword: lvdamao

将加密后的字符串替换掉原来的明文密码,并确保格式正确:

spring:datasource:                                     # 数据源的相关配置type: com.zaxxer.hikari.HikariDataSource      # 数据源的类型,可以更改为其他的数据源配置,比如druiddriver-class-name: com.mysql.cj.jdbc.Driver      # mysql/MariaDB 的数据库驱动类名称url: jdbc:mysql://192.168.88.160:3306/mpw-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTCusername: rootpassword: ENC(q+diStq05V6enG/Dcvcc6kPk0f8vc0Ii)hikari:connection-timeout: 30000               # 等待连接池分配连接的最大时间(毫秒),超过这个时长还没有可用的连接,则会抛出SQLExceptionminimum-idle: 5                         # 最小连接数maximum-pool-size: 20                   # 最大连接数auto-commit: true                       # 自动提交idle-timeout: 600000                    # 连接超时的最大时长(毫秒),超时则会被释放(retired)pool-name: DataSourceHikariCP           # 连接池的名字max-lifetime: 18000000                  # 连接池的最大生命时长(毫秒),超时则会被释放(retired)connection-test-query: SELECT 1         # 用于发送sql语句保持连接状态

例如在数据库密码上使用
在这里插入图片描述

4. 测试解密功能

当 Spring Boot 应用启动时,Jasypt 会自动对 ENC() 标识的字符串进行解密。可以通过以下方式验证解密是否成功:

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@RestController
@RequestMapping("/test")
public class HelloWorld {@Value("${spring.datasource.password}")private String decryptedPassword;@GetMapping("/paswword")public String hello(){return "Decrypted Password: " + decryptedPassword;}}

访问 /password 接口,应该能够看到解密后的明文密码。
在这里插入图片描述


四、进阶配置

1. 自定义加密标识

默认情况下,Jasypt 使用 ENC() 作为加密标识。如果你希望自定义加密标识,可以在 application.yml 文件中进行如下配置:

jasypt:encryptor:property:prefix: MY_ENC(suffix: )password: your-secret-key

这样,加密后的字符串将以 MY_ENC() 形式表示。

2. 指定加密算法

Jasypt 默认使用 PBEWithMD5AndDES 算法进行加密。如果你希望使用更高级别的加密算法(如 AES),可以在 application.yml 文件中指定:

jasypt:encryptor:algorithm: PBEWITHHMACSHA512ANDAES_256iv-generator-classname: org.jasypt.iv.NoIvGeneratorpassword: your-secret-key

注意:某些高级加密算法可能需要安装 Java Cryptography Extension (JCE) 无限强度权限策略文件。


五、总结

通过本文的学习,我们了解了如何在 Spring Boot 项目中使用 Jasypt 对 application.yml 文件中的敏感信息进行加密。具体步骤包括引入 Jasypt 依赖、配置加密密钥、加密敏感信息以及测试解密功能。此外,还介绍了如何自定义加密标识和指定加密算法等进阶配置。

使用 Jasypt 不仅可以提高配置文件的安全性,还可以减少因配置文件泄露而导致的安全风险。希望本文对你有所帮助!


http://www.dtcms.com/wzjs/606749.html

相关文章:

  • 专门做t恤的网站中国建设银行官网首页 网站首页
  • 做英文的小说网站朋友圈广告代理商官网
  • 汕头网站建设开发最近一周新闻热点大事件
  • 网站的站点地图怎么做wordpress widgetkit
  • 襄阳高端网站建设做自行车网站应该注意什么
  • 建设网站比较好的公司排名宁波企业黄页公司黄页
  • 济南 网站推广wordpress外贸网站模板
  • 网站优化最为重要的内容是十大美妆电商平台
  • 联享品牌网站建设公司衡水网站建设联系电话
  • 深圳网站制作880凡科网登录下载
  • 网站登录按钮怎么做php网站怎么做seo
  • 旅游公司网站开发wordpress 布局编辑器
  • 网站域名批量查询注册免费制作图片的软件有哪些
  • 卖鞋做哪个网站好虚拟机做网站
  • 有网站源码怎么做网站网站服务器租赁多少钱
  • python 做网站 数据库简洁企业网站asp
  • 小型网站建设参考文献广州冼村是什么梗
  • 广东研发网站建设平台学设计的素材网站
  • 宿迁城乡住房建设厅网站wordpress网站地图
  • 手机网站仿站网站色彩的搭配原则有哪些
  • wordpress整站搬家首页空白问题微信公众号和微网站
  • 公司网站运营方案策划教育wordpress模板下载地址
  • 怎么黑入网站专门做美食的视频网站有哪些
  • 做外贸经常用的网站网站风险解除
  • 接做网站需要问什么软件百度站长平台账号购买
  • 学校网站怎么做电商设计网站
  • 设计公司做网站有用吗怎么设置自己的网站
  • 华容县住房和城乡建设局网站企业网站建设 法规
  • 网站规划在网站建设中的作用是城阳区规划建设局网站
  • 哈尔滨网站设计公司湖南网站设计外包服务