Spring Boot (v3.2.12) + application.yml + jasypt 数据源加密连接设置实例

发布于:2025-08-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

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: ")"

参考资料

JASYPT: Java Simplified Encryption 1.9.3-SNAPSHOT API


网站公告

今日签到

点亮在社区的每一天
去签到