SpringBoot中配置敏感信息加密处理方案 Evergreen 2025年09月29日 加密, spring, 实战技巧 预计阅读 3 分钟 步骤: 1. 添加依赖加密依赖包 ```xml com.github.ulisesbocchio jasypt-spring-boot-starter 2.1.2 ``` 添加`jasypt-spring-boot-starter`依赖包之后,可以通过Maven中的Dependencies查询到该依赖存在`org.jasypt`的依赖包,该包实现了加密解密处理。 2. 分析测试**jasypt**依赖包,加密/解密测试 进入jasypt依赖包的目录,可以找到两个工具类来加密解密实现: ```java org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI # 加密加密 org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI # 解密工具 ``` 进入该依赖包目录测试加密实现: ```shell java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=test algorithm=PBEWithMD5AndDES ``` 参数说明: - input 要加密的内容 - password 加密密钥 - algorithm 加密算法 结果会打印:OUTPUT 为加密结果 ```shell ----ARGUMENTS------------------- input: root password: test algorithm: PBEWithMD5AndDES ----OUTPUT---------------------- yYLFvZKM2ZzRG9Kh1fsgBw== ``` 进入该依赖包目录测试`解密`实现: ``` java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="RtsSwEe6MIq8nZnBU9uQhg==" password=test algorithm=PBEWithMD5AndDES ``` - input 加密的内容 结果打印解密的内容 3. 需要再SpringBootApplication上添加开启加密注解 ```java @EnableEncryptableProperties ``` 4. 配置文件中配置要加密的配置参数,配置加密参数前使用`ENC()`来包裹 ```yaml spring: datasource: url: ENC(yYLFvZKM2ZzRG9Kh1fsgBw==) ``` 5. 配置密钥和加密算法,可以在配置文件中配置,也可以在启动参数中配置。这个配置要在加密文件前配置 - 配置文件中配置 ```yaml jasypt: encryptor: algorithm: PBEWithMD5AndDES password: test ``` - 启动参数中配置:` --jasypt.encryptor.password=test` 6. 启动配置 ```java public static void main(String[] args) throws Exception { ConfigurableApplicationContext application = SpringApplication.run(XXApplication.class, args); Environment env = application.getEnvironment(); String serviceName = env.getProperty("spring.application.name"); String port = env.getProperty("server.port"); String address = InetAddress.getLocalHost().getHostAddress(); log.info("\n----------------------------------------------------------\n\t" + "Application '{}' is running! Access URLs:\n\t" + "Local: \thttp://localhost:{}\n\t" + "External: \thttp://{}:{}\n\t" + "SwaggerUI:\thttp://{}:{}/swagger-ui/index.html\n\t" + "knife4J: \thttp://{}:{}/doc.html\n" + "----------------------------------------------------------", serviceName, port, address, port, address, port, address, port); } ```
评论区