在线MD5生成工具
配置文件加密,集成ENC
-
引入POM依赖
<!-- ENC配置文件加密 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency>
-
【注意】开始使用的3.1.5版本,启动报错:
Reason: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.redis.password' to java.lang.String
报错原因:因为3.x版本的默认加密算法变了,所以对应配置文件加密算法配置得修改,同时加密的方法也得用新的加密算法计算出加密字符串。
-
使用工具类对明文数据进行加密处理,使用完后为了安全起见,可以删除加密盐值
package com.basic.test; import org.jasypt.util.text.BasicTextEncryptor; import org.junit.Test; /** * ClassName: CryptTest * Package: com.basic.test * Description: * * @Author 王涵 * @Date 2024/12/17 14:18 * @Version 1.0 */ public class CryptTest { /** * 加密盐值,使用完成后进行删除,或者不能提交到`生产环境`,比如: */ private final static String PASSWORD = "basic"; @Test public void encTest() { BasicTextEncryptor encryptor = new BasicTextEncryptor(); // 用于设置加密密钥。密钥是用于加密和解密字符串的关键信息。 encryptor.setPassword(PASSWORD); // 明文1 String name_encrypt = "wwwbaiducom"; // 明文2 String password_encrypt = "123456"; // 明文加密 String encrypt1 = encryptor.encrypt(name_encrypt); String encrypt2 = encryptor.encrypt(password_encrypt); System.out.println("明文加密1:" + encrypt1); System.out.println("明文加密2:" + encrypt2); // 密文解密 String decrypt1 = encryptor.decrypt(encrypt1); String decrypt2 = encryptor.decrypt(encrypt2); System.out.println("密文解密1:" + decrypt1); System.out.println("密文解密2:" + decrypt2); } }
-
将加密后的密码配置到配置文件,使用
ENC()
包裹。不需要ENC时可以直接写密码,不用ENC包裹即可
# 主库数据源
master:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: ENC(dboFmyYdJOKJYKt1DX/jmzPBcipbHHeP)
-
运行时配置
-
打开Run/Debug Configuratios
-
打开
Modify options
选择Add VM Optiosn
-
配置
VM Options
为自己的加密盐值
-
-
启动类配置
@EnableEncryptableProperties
package com.basic; import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; /** * @Author WangHan * 心中那自由的世界,如此的清澈高远。 * @Date 2024/12/6 14:47 * @Description 启动程序 */ @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) @EnableEncryptableProperties public class BasicApplication { public static void main(String[] args) { // 热部署生效 true 开启热部署 false 关闭热部署 System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(BasicApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 基础框架启动成功 ლ(´ڡ`ლ)゙"); } }
-
jar包运行指定加密规则
cd /opt/home/test/ nohup java -Xms512m -Xmx512m -jar -Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX test-base.jar --spring.profiles.active=dev > test-base.out 2>&1 & echo start test-base
-
部署到tomcat
export JAVA_OPTS="-Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX"