目前我们对yml配置文件中的密码都是明文显示,显然这不安全,有的程序员离职了以后可能会做一些非法骚操作,所以我们最好要做一个加密,只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。
我们可以使用jasypt来实现密码加密的机制
common工程添加依赖:
<dependency>x
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
创建一个test类
@SpringBootTest
public class JasyptTest {
@Test
public void testPwdEncrypt() {
// 实例化加密器
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
// 配置加密算法和秘钥
EnvironmentPBEConfig config = new EnvironmentPBEConfig();
config.setAlgorithm("PBEWithMD5AndDES"); // 设置加密算法,默认的
config.setPassword("fengjianyingyue"); // 用于加密的秘钥(盐),可以是随机字符串,一定要记住并且存储好
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("++++++++++++++++++++++++++++++");
// 备注:此方式也可以用于账号密码登录的加盐操作
}
// bg4mklHlRGmEUrhSr2hoCA==
// EkSpYxuOam5DntjuV/0K3w==
// PGUSPogsj7txKyfrjwr8lA==
@Test
public void testPwdDecrypt() {
// 实例化加密器
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
// 配置加密算法和秘钥
EnvironmentPBEConfig config = new EnvironmentPBEConfig();
config.setAlgorithm("PBEWithMD5AndDES"); // 设置加密算法,默认的
config.setPassword("fengjianyingyue"); // 用于加密的秘钥(盐),可以是随机字符串,一定要记住并且存储好
encryptor.setConfig(config);
String pendingPwd = "EkSpYxuOam5DntjuV/0K3w==";
String myPwd = encryptor.decrypt(pendingPwd);
System.out.println("++++++++++++++++++++++++++++++");
System.out.println("+ 解密后的密码为:" + myPwd);
System.out.println("++++++++++++++++++++++++++++++");
}
}
运行结果可以看到,每次运行获得的加密密码都是不一样的。但是没关系,解密的话都是可以的。只要有秘钥,就能解密。
yml配置:
运行测试结果消息队列能否消费。
加上ENC()作为jasypt唯一识别
作业
- 把jasypt作为加盐的第二种方式,提供给MD5Utils作为第二种加密方式
- 使用nacos配置jasypt秘钥