引入依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
生成要加密的字符串
@Test
void test(){
BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
//加密所需的salt(盐)
textEncryptor.setPassword("abide");
//要加密的数据(数据库的用户名或密码)
String password = textEncryptor.encrypt("nihao@2023");
System.out.println("password:" + password);
String serverAddr = textEncryptor.encrypt("127.0.0.1");
System.out.println("serverAddr:" + serverAddr);
serverAddr = textEncryptor.encrypt("127.0.0.1:8848");
System.out.println("serverAddr:" + serverAddr);
}
输出结果
password:kLGkPBWReURRJH/7S/TDb72/ZYUqmM2Z
serverAddr:El4jbRiCtldaSeBFSKzYP+fkHL0GDBeh
serverAddr:eKK9nJZClYBnsd+3rWkELDsrROPqKHVM
在配置文件中使用
spring:
cloud:
nacos:
server-addr: ENC(eKK9nJZClYBnsd+3rWkELDsrROPqKHVM) # 127.0.0.1:8848
或者间接使用
spring:
cloud:
nacos:
server-addr: ${general.ip}:8848 # 127.0.0.1:8848
general:
ip: ENC(El4jbRiCtldaSeBFSKzYP+fkHL0GDBeh) # 127.0.0.1
注意错误的使用方式
spring:
cloud:
nacos:
server-addr: ENC(El4jbRiCtldaSeBFSKzYP+fkHL0GDBeh):8848 # 该方式无法解析
实际应用
在pom文件中声明多环境配置
<profiles>
<profile>
<id>local</id>
<properties>
<!-- nacos 配置-->
<nacos-username>nacos</nacos-username>
<nacos-password>ENC(KXYyylH19HbJONi9AvXKUmVxyydaKmYN)</nacos-password>
<nacos-namespace>113a5cf9-3fc1-433d-a501-fb5031509093</nacos-namespace>
<qd-password>ENC(JBR6ni1OsHea7U9GrxhFNQ==)</qd-password>
<!-- 通用ip-->
<general-ip>ENC(gRsyLEoPOnLqMSxHxkYWPL2L1X7rmQka)</general-ip>
<!-- jasypt 密钥(盐)-->
<jasypt-encryptor-password>hahaha</jasypt-encryptor-password>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>prod</id>
<properties>
<!-- nacos 配置-->
<nacos-username>nacos</nacos-username>
<nacos-password>ENC(+xGQQWIdA5NrpoOjnH2wEhMuMLnZ3e/F)</nacos-password>
<nacos-namespace>113a5cf9-3fc1-433d-a501-fb5031509093</nacos-namespace>
<!-- 通用ip-->
<general-ip>ENC(fcqB0FuzNQsktZFQVyLFAZ49C61lPBB2)</general-ip>
<!-- jasypt 密钥(盐)-->
<jasypt-encryptor-password>biubiubiu</jasypt-encryptor-password>
</properties>
</profile>
</profiles>
bootstrap.yaml文件使用配置
jasypt:
encryptor:
password: ${jasypt-encryptor-password}
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator
general:
addr: ${general-ip} # 接收jasypt解密后的数据
spring:
datasource:
dynamic:
datasource:
master:
url: jdbc:mysql://${general.addr}:3306/teach?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
cloud:
nacos:
server-addr: ${general.addr}:8848
username: ${nacos-username}
password: ${nacos-password}
discovery:
namespace: ${nacos-namespace}
manven编译时选择对应环境编译即可
如果使用中存在问题,欢迎一起讨论