springboot 配置文件加密

使用jasypt-spring-boot-starter组件实现配置文件的加密,github地址:https://github.com/ulisesbocchio/jasypt-spring-boot

一、引入依赖

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

二、添加配置信息
使用ENC()将加密后的内容包裹起来,ENC()为默认格式,可以通过配置文件自定义配置。

datasource:
    url: ${SPRING_DATASOURCE_URL:jdbc:mysql://192.168.16.205:3306/hscs_hsdi?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true}
    username: ${SPRING_DATASOURCE_USERNAME:ENC(oWle0nC9ozabd6H/m+4GhA==)}
    password: ${SPRING_DATASOURCE_PASSWORD:ENC(b6tPJt+jNB2i0Q5RfSwdUqPKGMRalbv+)}

jasypt-spring-boot-starter 组件使用的是PBE加密算法,PBE算法(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,所以口令不可配置在配置文件中,可以在项目启动的时候作为参数传进去。

jasypt:
    encryptor:
      #jasypt加密口令
      password: hscs
      #加密算法
      algorithm: PBEWITHHMACSHA512ANDAES_256
      #前缀和后缀
      property:
        prefix: "ENC("
        suffix: ")"

本地启动项目后获取加密后字符串,获取后配置到需要加密的地方。

@Autowired
StringEncryptor encryptor;

@Override
public Map<String,String> encryptorMsg(Map<String,String> messagesMap) {
    Map<String,String> resultMap = new HashMap<>();
    //加密
    messagesMap.forEach((k,v)->{
        String encryptedStr = encryptor.encrypt(v);
        resultMap.put("encode_"+k,encryptedStr);
    });
    return resultMap;
}
{
    "encode_password": "v7dZGtAkky3QiZCGYBzuN6bdF8r9xg9Z7scd7xH6KMcjgsnQLnnsH7KjTaMGvkqv",
    "encode_name": "8HOd7Gzj1XJHcp5HLU/YzM1PUTfqMv4KJjTCFvGXnnmfFTCrhmi+V7p2z/xbwE6V"
}

版权声明:本文为weixin_42708896原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。