Spring Boot 使用jasypt 加密数据源配置信息

Spring Boot 使用jasypt 加密数据源配置信息

    • jasypt( Java simplified encryption)
    • 项目中简单应用

jasypt( Java simplified encryption)

项目中简单应用

https://github.com/ulisesbocchio/jasypt-spring-boot

pom.xml

        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

使用此jar生成密文,在此路径下执行下面命令行生成密文

.m2\repository\org\jasypt\jasypt\1.9.2> java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=mua1w58wO algorithm=PBEWithMD5AndDES input=root

执行以上命令输出下面的结果

----ENVIRONMENT-----------------

Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.181-b13
----ARGUMENTS-------------------

input: root
algorithm: PBEWithMD5AndDES
password: mua1w58wO

----OUTPUT----------------------

LqA4QvntRFStX0jiDjkJWw==

input:要加密的字符串(此处是数据库用户名)
algorithm:加密算法(默认:PBEWithMD5AndDES)
password:加密密钥(解密需要它,妥善保管,不能被泄漏)
OUTPUT:加密后的密文

对数据库的密码以相同的方法得到加密密文

application.yml

spring:
  application:
    name: app
  datasource:
    url: xxxxxxxx
    driver-class-name: com.mysql.jdbc.Driver
    username: ENC(5RwkxI+reRMVmS9TemQTrcVozEdGS5bz)
    password: ENC(OWvCdX3Bove0kv84mG0U5p7OWRK/xBzDwOkAnvxXXkA=)

其中ENC()是必须的,如果没有ENC()则认为是未经过加密的明文,不会进行解密处理
Spring Boot 使用jasypt 加密数据源配置信息_第1张图片
这是模拟生产环境的配置,–jasypt.encryptor.password的值应该配置的环境变量中,在命令行启动jar时指定其值
真实的情况应该是在系统中配置环境变量,如下

在系统环境里配置

export JASYPT_PASSWORD=mua1w58wXXXXOXXXXX

java -jar app-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=${JASYPT_PASSWORD}

你可能感兴趣的:(学习笔记)