SpringBoot配置文件加密

SpringBoot配置文件加密

公司为了增加配置文件安全性,配置文件中不能用明文的数据库连接密码等信息,因此需要对application.yml配置文件中的密码加密,搜了下发现springboot中比较常用的加密框架是jasypt

下载jasypt

下载地址:

https://github.com/jasypt/jasypt/releases/tag/jasypt-1.9.3

里面提供一些工具,可以方便使用,代码中使用可以用maven引入。

引入jasypt

使用Maven引入,现在是3.0.3版本:

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

配置jasypt

配置加密密码:

jasypt:
  encryptor:
    password: 12345678

可以先使用jasypt来生成加密字符串

    @Autowired
    private StringEncryptor jasyptStringEncryptor;

    @PostMapping("/encrypt")
    public BaseStrResult encrypt(@RequestBody BaseStrParam param){
        String encryptStr = jasyptStringEncryptor.encrypt(param.getInput());
        BaseStrResult result = new BaseStrResult();
        result.setResult(encryptStr);
        return result.success();
    }

配置到配置文件中

spring:
  datasource:
    password: ENC(LGw2sBBoQ061HhpCPS7lgiOWCfHxUonaDy2GtY6W+/tJakz1jKHhBSHQ6j3K0LFt)

可以正常启动就表示成功了。

jasypt配置算法

默认jasypt使用的算法是:PBEWITHHMACSHA512ANDAES_256,基于密码的SHA512+AES算法,需要 Java JDK 1.9+

查看支持的算法:

$ listAlgorithms.bat

DIGEST ALGORITHMS:   [MD2, MD5, SHA, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA3-224, SHA3-256, SHA3-384, SHA3-5
12]

PBE ALGORITHMS:      [PBEWITHHMACSHA1ANDAES_128, PBEWITHHMACSHA1ANDAES_256, PBEWITHHMACSHA224ANDAES_128, PBEWITHHMACSHA224ANDAES_256, P
BEWITHHMACSHA256ANDAES_128, PBEWITHHMACSHA256ANDAES_256, PBEWITHHMACSHA384ANDAES_128, PBEWITHHMACSHA384ANDAES_256, PBEWITHHMACSHA512AND
AES_128, PBEWITHHMACSHA512ANDAES_256, PBEWITHMD5ANDDES, PBEWITHMD5ANDTRIPLEDES, PBEWITHSHA1ANDDESEDE, PBEWITHSHA1ANDRC2_128, PBEWITHSHA
1ANDRC2_40, PBEWITHSHA1ANDRC4_128, PBEWITHSHA1ANDRC4_40]

可以选择需要使用的算法加密。

jasypt命令行工具

从Github下载的文件jasypt-1.9.3-dist.zip解压后可以看到bin目录下有不少工具

listAlgorithms.bat获取支持的算法

命令行加密工具帮助:

.\encrypt.bat
USAGE: encrypt.bat [ARGUMENTS]
  * 参数格式:
      "arg1=value1 arg2=value2 arg3=value3 ..."
  * 必填参数:
      input
      password
  * 可选参数:
      verbose
      algorithm
      keyObtentionIterations
      saltGeneratorClassName
      providerName
      providerClassName
      stringOutputType
      ivGeneratorClassName

命令行加密:

# 加密
encrypt.bat input="12345678" password="1234567890" algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator
# 解密
decrypt.bat input="B8HS1fG8WQwxtIw+SnExxLrUal8hJ516H3DiwdbJIztvxWIMT2TL1y7uqPdX/P+9" password="1234567890" algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator
上一篇
下一篇