本文主要是介绍再也不怕离职同事泄露配置文件的密码了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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
rabbitmq
的password
使用ENC(加密后的字符串)
的形式来书写,这样当项目启动后,Spring容器
会使用Jasypt工具
对配置文件中的密文进行解密,得到真正的配置内容。
总结
用法其实很简单,不得不说这个工具很实用。
最后说一句(求关注!别白嫖!)
如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。
关注公众号:woniuxgg,在公众号中回复:笔记 就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!
这篇关于再也不怕离职同事泄露配置文件的密码了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!