我们在写配置文件的时候经常会涉及到密码,比如数据库,redis,RabbitMQ等,那这种密码如果直接写明文的话,会存在一定风险,比如开发人员离职后,还知道原来数据库的密码,那就风险很大,所以有必要把密码加密。
- 加依赖
<!-- jasypt 加解密 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency>
- 加密解密测试
package com.imooc.test; 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("zhushanglin"); // 用于加密的秘钥(盐),可以是随机字符串,或者固定,一定要存储好,不要被其他人知道 config.setAlgorithm("PBEWithMD5AndDES"); // 设置加密算法,默认 encryptor.setConfig(config); // 对密码进行加密 String myPwd = "guest"; 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("zhushanglin"); // 用于加密的秘钥(盐),可以是随机字符串,或者固定,一定要存储好,不要被其他人知道 config.setAlgorithm("PBEWithMD5AndDES"); // 设置加密算法,默认 encryptor.setConfig(config); // 对密码进行解密 String pendingPwd = "BKUDo+ArPPA5C9u2WqbmUQ=="; String myPwd = encryptor.decrypt(pendingPwd); System.out.println("++++++++++++++++++++++++++++++"); System.out.println("+ 解密后的密码为:" + myPwd); System.out.println("++++++++++++++++++++++++++++++"); } }
- 配置文件中使用
密文用ENC()包起来