在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
java中保护数据库密码的核心是“存密文、运行时解密”,推荐集成jasypt:添加3.0.4版starter依赖;用命令行工具生成enc(...)格式密文填入application.yml;解密密钥必须通过jvm参数或环境变量传入,不可写死;可选升级为pbewithhmacsha512andaes_256算法。

Java 中保护配置文件里的数据库密码,核心是“存密文、运行时解密”,而不是把密码明文写死。最常用也最稳妥的方式是集成 Jasypt,它能与 Spring Boot 无缝协作,对配置项自动加解密,业务代码完全无感。
引入 Jasypt 依赖
在 pom.xml 中添加 starter(注意版本兼容性,Spring Boot 2.7+ 推荐用 3.x):
<dependency></dependency><groupid>com.github.ulisesbocchio</groupid><artifactid>jasypt-spring-boot-starter</artifactid><version>3.0.4</version>
生成并填入加密密文
不能手动拼密文,必须用 Jasypt 工具或代码生成:
- 命令行方式(推荐):
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="myDbPass123" password="MySecretKey" algorithm=PBEWithMD5AndDES - 执行后输出类似
ENC(7XzJvQaYcRtKsLmNpOqWxYzA==)的字符串 - 把它填进 application.yml 对应字段,格式严格为
ENC(...):
spring:<br> datasource:<br> url: jdbc:mysql://localhost:3306/test<br> username: root<br> password: ENC(7XzJvQaYcRtKsLmNpOqWxYzA==)
安全传入解密密钥
密钥 绝不能写在配置文件里,否则等于没加密。生产环境必须隔离:
- 启动时通过 JVM 参数传入:
java -jar app.jar --jasypt.encryptor.password=MySecretKey - 或设为环境变量(Linux/macOS):
export JASYPT_ENCRYPTOR_PASSWORD=MySecretKey - K8s 环境建议用 Secret 挂载;微服务架构下可由 Nacos/Apollo 等配置中心统一推送密钥
可选:升级算法增强安全性
默认的 PBEWithMD5AndDES 强度偏低,建议改用更现代的算法:
- 在 application.yml 中显式指定:
jasypt:<br> encryptor:<br> password: ${JASYPT_ENCRYPTOR_PASSWORD}<br> algorithm: PBEWITHHMACSHA512ANDAES_256<br> iv-generator-classname: org.jasypt.iv.RandomIvGenerator
注意:该算法需 JDK 9+ 或提前安装 JCE 无限强度策略文件。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










