对外部application.properties里面的jdbc进行加密
时间: 2023-10-03 12:00:57 浏览: 115
对于外部的application.properties中的jdbc配置进行加密,可以采用如下方法:
首先,需要引入加密工具,例如Jasypt(Java simplified encryption)等。在项目的pom.xml文件中添加对应的依赖项。
然后,在应用的配置文件(如application.properties)中配置数据库连接信息,如下所示:
```
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myusername
spring.datasource.password=mysecretpassword
```
接下来,在代码中使用Jasypt对这些敏感信息进行加密和解密。可以创建一个Encryptor类,负责加密和解密操作。
```java
import org.jasypt.encryption.pbe.PBEStringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
public class Encryptor {
private static final String ENCRYPT_PASSWORD = "yourEncryptionPassword";
public static void main(String[] args) {
// 加密
System.out.println("Encrypted password: " + encrypt("mysecretpassword"));
// 解密
System.out.println("Decrypted password: " + decrypt("encryptedPassword"));
}
private static String encrypt(String value) {
PBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(ENCRYPT_PASSWORD);
return encryptor.encrypt(value);
}
private static String decrypt(String value) {
PBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(ENCRYPT_PASSWORD);
return encryptor.decrypt(value);
}
}
```
在配置文件中使用加密后的值,如下所示:
```
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myusername
spring.datasource.password=ENC(encryptedPassword)
```
当应用启动时,会自动调用Encryptor类中的encrypt方法对密码进行加密,并将加密后的密码存储在application.properties中。在使用密码时,会自动调用Encryptor类中的decrypt方法进行解密。这样就可以保护数据库密码,避免了明文存储的安全隐患。
阅读全文