背景
对于配置中心的账号、密码进行加密,项目汇总用到的是 jasypt 的解决方案。
Maven 依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.16</version>
</dependency>
JAVA 参数配置
在启动的bootstrap.yml 增加 jasypt 解密的秘钥
jasypt:
encryptor:
password: sang #根密码
调用JAVA API 生成密文
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = AdminApplication.class)
public class AdminApplicationTest {
@Autowired
private StringEncryptor stringEncryptor;
@Test
public void testEnvironmentProperties() {
System.out.println(stringEncryptor.encrypt("sang"));
}
}
或者直接使用JAVA 方法调用 (不依赖 spring 容器)
/**
* jasypt.encryptor.password 对应 配置中心 application-dev.yml 中的密码
*/
@Test
public void testEnvironmentProperties() {
System.setProperty(JASYPT_ENCRYPTOR_PASSWORD, "sang");
StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
//加密方法
System.out.println(stringEncryptor.encrypt("123456"));
//解密方法
System.out.println(stringEncryptor.decrypt("saRv7ZnXs"));
}
配置文件中使用密文
spring:
datasource:
password: ENC(密文)
解析代码示例
public static void main(String[] args) {
StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
System.setProperty("jasypt.encryptor.password", "key");
System.out.println(stringEncryptor.decrypt("---"));
}