jasypt
在Spring Boot中,可以使用jasypt(Java Simplified Encryption)库来对敏感配置信息进行加密,官方文档地址
依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
配置
方法一:在配置文件中配置加密密钥(不推荐)
jasypt:
encryptor:
password: your_password
加密密钥存放在配置文件中是不安全的,一旦配置文件泄露,所有加密的数据等同于没有加密
方式二:在项目启动时配置加密密钥(推荐)
java -jar demo.jar -Djasypt.encryptor.password= your_password
方式三:IDEA开发指定
在Edit Configurations ...
中找到Modify options
,勾选Environment variables
环境变量,并加入对应的参数,如:
--jasypt.encryptor.password=1jHf8GnL4pKq7E90
如果使用Test,同理配置即可
加密
首先,对需要加密的信息进行加密,注意,一定要配置jasypt.encryptor.password
,可以通过启动指定
import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
@SpringBootTest
public class JasyptTest {
@Resource
private StringEncryptor stringEncryptor;
@Test
void test() {
System.out.println("加密结果:" + stringEncryptor.encrypt("192.168.0.201"));
}
}
获取到加密后的url、password、username,在配置文件中进行配置,使用ENC()将加密后的字符串包裹
data:
url: ENC(wRmYMwEop6JEbMr9zem6KWoVCnvjmOUWVnYbLnC8EXUzTbWzlIiQXlZRsHoRe2wdbqFW6qcJ6ruODSBchWvYK+wzqXPmJyjGUi8ggXKSSJiF3H1K9WtliPxf3ns6zj1yUToYSMZg4Hqf47iXMBGZmWySkPDPKhxM+MjCSxO4DhfKKPq7jHW6bIaqFm2VdoThF5nZXAT7FZZ5Egh+PGAxdnlFbeilCTHyzwEUsS80TS7j3wPFMjF/krataPPgp/KPSftXw6l0cJ2q8tnXkgKuYZ+Nmw8QbsuEApgYARooYic=)
username: ENC(KFIkzv1QV0oaYMzgHjlefmzbonWZMVA9vzBEx6TnlHGAGO1AolOKQD/FrTegZoqf)
password: ENC(t2L79RtORPH1UcE9R1g5OYLN9zDVvo9VLNPQmx5cD50AzDxNT2zIdGRGxhW8PgxL)