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_256
algorithm: PBEWithMD5AndDES
# PBEWithMD5AndDES 不需要 iv,必须设置 iv-generator-classname: org.jasypt.iv.NoIvGenerator
iv-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: ")"
参考资料