再也不怕离职同事泄露配置文件的密码了

2024-06-18 05:12

本文主要是介绍再也不怕离职同事泄露配置文件的密码了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Jasypt是一个功能强大、易于使用的Java加密库,适用于需要进行数据加密安全保护的各类应用程序和系统。

实战

1、引入依赖

说明:JDK1.8 选择2.x版本,高一些版本的JDK就选择3.x的版本。

xml

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

2、编写测试代码

我们编写SpringBootTest测试类,来完成加解密的基本功能。

其中testPwdEncrypt()是加密方法,testPwdDecrypt()是解密方法。

 

java

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 {

@Test
public void testPwdEncrypt() {

// 实例化加密器
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();

// 配置加密算法和秘钥
EnvironmentPBEConfig config = new EnvironmentPBEConfig();
config.setPassword("chengxuyuanjidian"); // 用于加密的秘钥(盐),可以是随机字符串,或者固定,一定要存储好,不要被其他人知道
config.setAlgorithm("PBEWithMD5AndDES"); // 设置加密算法,默认
encryptor.setConfig(config);

// 对密码进行加密
String myPwd = "imooc";
String encryptedPwd = encryptor.encrypt(myPwd);
System.out.println("++++++++++++++++++++++++++++++");
System.out.println("+ 原密码为:" + myPwd);
System.out.println("+ 加密后的密码为:" + encryptedPwd);
System.out.println("++++++++++++++++++++++++++++++");
}

@Test
public void testPwdDecrypt() {

// 实例化加密器
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();

// 配置加密算法和秘钥
EnvironmentPBEConfig config = new EnvironmentPBEConfig();
config.setPassword("chengxuyuanjidian"); // 用于加密的秘钥(盐),可以是随机字符串,或者固定,一定要存储好,不要被其他人知道
config.setAlgorithm("PBEWithMD5AndDES"); // 设置加密算法,默认
encryptor.setConfig(config);

// 对密码进行解密
String pendingPwd = "XD8gz6KU4d/n3DKgeNASBw==";
String myPwd = encryptor.decrypt(pendingPwd);
System.out.println("++++++++++++++++++++++++++++++");
System.out.println("+ 解密后的密码为:" + myPwd);
System.out.println("++++++++++++++++++++++++++++++");
}

}

如上代码,我们假设对rabbitmq的密码进行加密,比如就是默认的guest,我们做一下加密,我设置的chengxuyuanjidian(程序员济癫拼音),打印出来结果是:

++++++++++++++++++++++++++++++
+ 原密码为:guest
+ 加密后的密码为:XD8gz6KU4d/n3DKgeNASBw==
++++++++++++++++++++++++++++++

同样的,我们调用解密方法,对内容进行解密,也能得到原来的guest

++++++++++++++++++++++++++++++
+ 解密后的密码为:guest
++++++++++++++++++++++++++++++
3、配置文件加密

好了,接下来,我们可以对配置文件的某些内容进行加密了,这里我就以application.yml中关于rabbitmq密码进行加密。

首先,我们在配置文件中加上Jasypt的配置,这样启动后会自动加入Spring容器管理。

 

yml

jasypt:
encryptor:
algorithm: PBEWithMD5AndDES # 算法,这里使用默认的。
password: chengxuyuanjidian # 盐,和测试类的一样。

然后,我们通过测试类获得rabbitmq对密码加密后的字符串,假设还是guest,那么我们就拿到了XD8gz6KU4d/n3DKgeNASBw==

所以,在yml中像这样配置下:

 

yml

spring:
rabbitmq:
host: 192.168.1.122
port: 5672
virtual-host: /
username: guest
password: ENC(XD8gz6KU4d/n3DKgeNASBw==)
listener:
simple:
acknowledge-mode: manual # 手动ack确认

jasypt:
encryptor:
algorithm: PBEWithMD5AndDES
password: chengxuyuanjidian

rabbitmqpassword使用 ENC(加密后的字符串) 的形式来书写,这样当项目启动后,Spring容器会使用Jasypt工具对配置文件中的密文进行解密,得到真正的配置内容。

总结

用法其实很简单,不得不说这个工具很实用。

最后说一句(求关注!别白嫖!)

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。

关注公众号:woniuxgg,在公众号中回复:笔记  就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!

这篇关于再也不怕离职同事泄露配置文件的密码了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071387

相关文章

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

前端-06-eslint9大变样后,如何生成旧版本的.eslintrc.cjs配置文件

目录 问题解决办法 问题 最近在写一个vue3+ts的项目,看了尚硅谷的视频,到了配置eslintrc.cjs的时候我犯了难,因为eslint从9.0之后重大更新,跟以前完全不一样,但是我还是想用和老师一样的eslintrc.cjs文件,该怎么做呢? 视频链接:尚硅谷Vue项目实战硅谷甄选,vue3项目+TypeScript前端项目一套通关 解决办法 首先 eslint 要

控制台和MFC中内存泄露工具vld的使用

最近想检测下项目中内存泄露的情况,选中了vld这款。在查找使用方法的时候,大都是控制台下的示例,添加到main函数所在的源文件上。换成MFC就纠结了,不知道添加到哪里去。本文记录控制台和MFC中的使用vld过程。    vld资源:    1)、大家可以移步下边的网址下载:     http://vld.codeplex.com/releases/view/82311    2

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

Centos9 网卡配置文件

1、Centos stream 9 网络介结 Centos以前版本,NetworkManage以ifcfg格式存储网络配置文件在/etc/sysconfig/networkscripts/目录中。但是,Centos steam 9现已弃用ifcfg格式,默认情况下,NetworkManage不再创建此格式的新配置文件。从Centos steam 9开始采用密钥文件格式(基于INI文件),Netw

mysql导出导入数据和修改登录密码

导出表结构: mysqldump -uroot -ppassword -d dbname tablename>db.sql; 导出表数据: mysqldump -t dbname -uroot -ppassword > db.sql 导出表结构和数据(不加-d): mysqldump -uroot -ppassword dbname tablename > db.sql;

【SpringMVC学习03】-SpringMVC的配置文件详解

在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。其实真正需要程序员开发的就两大块:一个是Handler,一个是jsp。 在springMVC的入门程序中,SpringMVC的核心配置文件——springmvc.xml为: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http: