关于properties配置文件的加密方式,可以采用Jasypt这个Java加密工具来实现。
具体步骤如下:
- 导入Jasypt的依赖包,可以在Maven中添加以下配置:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
- 在application.properties中配置加密的方式,可以采用如下例子中的方式:
jasypt.encryptor.password = mySECRETPassword
其中,mySECRETPassword
为自定义的密码,用于加密解密操作。
- 在需要进行加密的配置属性前添加前缀
ENC(
,表示该属性需要加密,例如:
db.username = ENC(J8wCPcNzjT08Jfzp)
db.password = ENC(14xhAG2NyjnL8eVCfQPWPqPChuiwabHn)
- 在Java代码中使用
@Value
注解调用加密后的属性值,例如:
@Service
public class MyService {
@Value("${db.username}")
private String username;
@Value("${db.password}")
private String password;
// 省略其他方法...
}
需要注意的是,如果在Java代码中使用了加密属性,需要在初始化时创建一个Jasypt加密器,并设置密码。例如:
@SpringBootApplication
public class MyApplication {
@Autowired
private Environment environment;
@Bean(name = "jasyptStringEncryptor")
public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setAlgorithm("PBEWithMD5AndDES");
encryptor.setPassword(environment.getRequiredProperty("jasypt.encryptor.password"));
encryptor.setPoolSize(1);
return encryptor;
}
}
其中,jasypt.encryptor.password
为上述自定义的密码,在此处设置给加密器。
下面是示例代码,假定我们要加密的属性为my.secret.property
:
# 加密器密码
jasypt.encryptor.password = mysecretpass
# 加密后的属性
my.secret.property = ENC(c22IV3QX5S7Hz+7CokCJtw==)
在Java代码中使用@Value
注解调用加密后的属性值:
@Service
public class MyService {
@Value("${my.secret.property}")
private String mySecretProperty;
// 省略其他方法...
}
需要在初始化时创建一个Jasypt加密器,并设置加密器密码:
@Configuration
public class AppConfig {
@Autowired
private Environment environment;
@Bean(name = "jasyptStringEncryptor")
public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setAlgorithm("PBEWithMD5AndDES");
encryptor.setPassword(environment.getRequiredProperty("jasypt.encryptor.password"));
encryptor.setPoolSize(1);
return encryptor;
}
}
另外,还可以在命令行中使用以下命令生成加密后的文本,例如:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="theSecret" password="mysecretpass" algorithm=PBEWithMD5AndDES
其中,input
为需要加密的文本,password
为加密器密码,algorithm
为加密算法。执行后会打印出加密后的文本,将其拷贝到properties配置文件中即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于properties配置文件的加密方式 - Python技术站