Spring Boot (v3.2.12) + application.yml + jasypt 数据源加密连接设置实例
1、安装 jasypt 依赖
<!-- Jasypt 加密依赖 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version></dependency>
2、生成密文
打开 jasypt-1.9.3.jar 所在目录
使用命令行
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="Sinmia123" password=WYLIMS_MASTER_KEY algorithm=PBEWithMD5AndDES
生成数据库连接密码密文
3、设置系统环境变量(windows)
新建或编辑系统变量:数据库连接的密码(密文)
新建或编辑系统变量:数据库连接的用户名
新建或编辑系统变量:数据库驱动类名称
新建或编辑系统变量:数据库连接的url
新建或编辑系统变量:jasypt 加密密钥
4、配置文件 application.yml 设置数据源连接信息
配置 jasypt
配置数据源 spring.datasource
spring:datasource:# driver-class-name: 数据库驱动类名称# url: 数据库连接的url# username: 数据库连接的用户名# password: 数据库连接的密码# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver# 从系统变量中获取driver-class-name: ${DB_DRIVER}
# url: jdbc:sqlserver://127.0.0.1:1433;databaseName=wylims# 从系统变量中获取url: ${DB_URL}# 从系统变量中获取username: ${DB_USERNAME}# 先通过 ${DB_PASSWORD} 从系统变量中获取数据库登录密码密文,再通过 ENC 解密(使用 jasypt 的加密密钥和加密算法进行解密)password: ENC(${DB_PASSWORD})# 配置 jasypt
# 生成密文,bash: java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="Sinmia123" password=WYLIMS_MASTER_KEY algorithm=PBEWithMD5AndDES
# 解密密文,bash: java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="YSpoz9PyDjn2eimXDB0Z1Rf2Vo3hehp1" password=WYLIMS_MASTER_KEY algorithm=PBEWithMD5AndDES
jasypt:encryptor:# 加密密钥password: ${JASYPT_ENCRYPTOR_PASSWORD}# 加密算法,经测试验证在配置文件 application.yml 中支持 PBEWithMD5AndDES,不支持 PBEWithMD5AndTripleDES、PBEWITHHMACSHA512ANDAES_256algorithm: PBEWithMD5AndDES# PBEWithMD5AndDES 不需要 iv,必须设置 iv-generator-classname: org.jasypt.iv.NoIvGeneratoriv-generator-classname: org.jasypt.iv.NoIvGenerator
# key-obtention-iterations: 1000
# pool-size: 1
# salt-generator-classname: org.jasypt.salt.RandomSaltGenerator
# string-output-type: base64
# # 加密识别属性,用于识别加密的内容,如 ENC(content),括号包裹的内容 content 是密文,会进行解密处理
# property:
# # 前缀:默认 ENC(
# prefix: "ENC("
# # 后缀:默认 )
# suffix: ")"
参考资料
JASYPT: Java Simplified Encryption 1.9.3-SNAPSHOT API