SpringBoot - 配置文件敏感信息加密

目录

介绍

方法

快速开始

1、导入 Jasypt 相关依赖

2、在 application.yml 中添加jasypt敏感信息加密配置

3、加密数据 这里给大家提供一个加密配置工具类,方法里可以测试和输出加密结果,拿到加密的结果替换配置文件中需要加密的数据即可

4、加密的后的密文替换原始配置文件中的密码,使用 "ENC()" 标记

5、开启配置文件加密

获取配置文件中的数据


介绍

目的:

为了保护敏感的数据库配置信息(如数据库用户名和密码),通常可以将它们加密后再储存在项目的配置文件中,以增加应用程序的安全性。

Java Jasypt(Java Simplified Encryption)是一个Java加密库,用于易于使用的加密和解密文本、二进制数据和密码。它提供了简单、安全、灵活的加密技术,包括基于口令的、密钥的、哈希的和混淆的加密。

方法

Spring Boot 提供了多种方式来实现配置文件加密,其中常见的方法包括:

  • 使用 Jasypt 加密

Jasypt 是一个 Java 加密库,支持将配置文件中的敏感信息进行加密和解密。

  • 使用 Spring Cloud Config Server 安全加密

Spring Cloud Config Server 是一个分布式配置管理组件,可以让您将项目的配置文件集中管理,并实现配置的动态刷新和加密。

与 Jasypt 相比,使用 Spring Cloud Config Server 实现配置文件加密通常需要注册一个 Config Server 并配置相关的加密插件。具体的步骤可以参考 Spring 官方文档进行查看。

无论使用哪种方式进行配置文件加密,您都需要确保密钥的安全,避免被泄露或篡改。通常建议将密钥存储在安全的地方,并加强密码策略以避免敏感信息泄露的风险。

快速开始

这里讲述第一种加密方式,在 Spring Boot 项目中使用 Jasypt 加密可以分为两个步骤:

1、导入 Jasypt 相关依赖

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

2、在 application.yml 中添加jasypt敏感信息加密配置

# jasypt 密码加密配置
jasypt:
  encryptor:
    # 加密盐值
    password: TLjas3.0.4
    # 加密算法设置 3.0.0 以后
    algorithm: PBEWithMD5AndDES
    iv-generator-classname: org.jasypt.iv.NoIvGenerator

3、加密数据 这里给大家提供一个加密配置工具类,方法里可以测试和输出加密结果,拿到加密的结果替换配置文件中需要加密的数据即可

package com.web.controller.tool;

import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class JasyptUtil {

    private static final Logger log = LoggerFactory.getLogger(JasyptUtil.class);

    /**
     * Jasypt生成加密结果
     * @param password 配置文件中设定的加密盐值
     * @param value 加密值
     * @return
     */
    public static String encyptPwd(String password,String value){
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        encryptor.setConfig(cryptor(password));
        String result = encryptor.encrypt(value);
        return result;
    }

    /**
     * 解密
     * @param password 配置文件中设定的加密盐值
     * @param value 解密密文
     * @return
     */
    public static String decyptPwd(String password,String value){
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        encryptor.setConfig(cryptor(password));
        String result = encryptor.decrypt(value);
        return result;
    }

    public static SimpleStringPBEConfig cryptor(String password){
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword(password);
        config.setAlgorithm("PBEWithMD5AndDES");
        config.setKeyObtentionIterations("1000");
        config.setPoolSize("1");
        config.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setStringOutputType("base64");
        return config;
    }


    public static void main(String[] args) {
        String encPwd = "Z34lT7GgZnfgdloDj7TVo7Xd4sB7pJzy";
        // 加密
        encPwd = encyptPwd("TLjas3.0.4", "需要加密密码填这里");// Xhw123.123.# QWVwAvPBsRCVlf5X7SC2xg==
        // 解密
        String decPwd = decyptPwd("TLjas3.0.4", encPwd);
        log.info(encPwd);
        log.info(decPwd);
    }
}

4、加密的后的密文替换原始配置文件中的密码,使用 "ENC()" 标记

5、开启配置文件加密

到这里运行程序就可以了。

如何获取配置文件中的数据:

在配置文件中写密文,程序启动后会自动解密,我们使用正常的@Value方式获取的数据即为解密后的数据。

config.name=My Config
config.version=1.0.0
config.password=ENC(V+sgI2xsjCIh2gHs15jN8CyAwGzpwr6k)

读取Config.password配置项的值:

@Value("${config.password}")
private String configPassword;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Maven可以使用加密工具对敏感数据进行加密,以确保安全性。 1. 安装JCE(Java Cryptography Extension)无限制策略文件 下载Java Cryptography Extension (JCE)无限制策略文件,解压缩后将jar包放到$JAVA_HOME/jre/lib/security/目录下。 2. 生成密钥文件 使用Maven提供的命令生成密钥文件: ``` mvn --encrypt-master-password <master_password> ``` 其中,`<master_password>`是需要加密的密码。执行该命令后,Maven会生成一个加密后的密码,例如: ``` {jSM4J4wmZ2B4peOFzDZ+3v7V3qJy5a7I9XQ2Oz7V5J8=} ``` 将这个加密后的密码复制到`settings.xml`文件中,如下所示: ``` <settings> <servers> <server> <id>myserver</id> <username>myusername</username> <password>{jSM4J4wmZ2B4peOFzDZ+3v7V3qJy5a7I9XQ2Oz7V5J8=}</password> </server> </servers> </settings> ``` 3. 解密密钥文件 在Maven配置文件中,使用加密后的密码可以确保安全性,但是在实际使用中需要将其解密。可以使用Maven提供的命令解密密钥文件: ``` mvn --encrypt-password <password> ``` 其中,`<password>`是加密后的密码。执行该命令后,Maven会生成一个解密后的密码,例如: ``` {mysecretpassword} ``` 将这个解密后的密码复制到`settings.xml`文件中,如下所示: ``` <settings> <servers> <server> <id>myserver</id> <username>myusername</username> <password>{mysecretpassword}</password> </server> </servers> </settings> ``` 现在,`settings.xml`文件中的密码已经被加密并且解密,可以确保安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值