每天每天
越来越爱

java项目配置文件敏感字段加密 springboot 使用jasypt配置文件加密

1、为什么要对文件加密


在没有对配置问价加密的时候,我们所有的密码都是使用明文的方式写入的,如果项目被别人拿到,通过配置文件就可以获取我们的数据库,redis连接,还是比较危险的一件事。


# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: root
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url: 
                username: 
                password: 

jasypt


jasypt官网

  1. asypt是一个Java库,它允许开发人员以最小的努力为他/她的项目添加基本的加密功能,而无需深入了解密码学的工作原理。

  2. 基于标准的高安全性加密技术,适用于单向和双向加密。加密密码,文本,数字,二进制文件...

  3. 与 Hibernate 的透明集成。

  4. 适合集成到基于 Spring 的应用程序中,也可以透明地与 Spring 安全性集成。

  5. 用于加密应用程序(即数据源)配置的集成功能。

  6. 多处理器/多核系统中高性能加密的特定功能。

  7. 开放 API 以与任何 JCE 提供程序一起使用。

……

spring项目集成


1⃣️ 引入maven依赖

springboot 项目引入下面的依赖包

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

2⃣️生成密码

public static void main(String[] args) {
        StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();
        String pwd = "root";
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();

        config.setAlgorithm("PBEWithMD5AndDES");
        config.setPassword("shige");// 这里的‘shige’为私钥,不可以泄漏
        standardPBEStringEncryptor.setConfig(config);

        String encrypt = standardPBEStringEncryptor.encrypt(pwd);
        System.out.println(encrypt);
    }

执行结果如下,红色框中的就是加密后的密码。

3⃣️修改配置文件

将上面执行得到的秘闻写入配置文件中,加密的密码默认使用ENC()包裹。ENC()可以通过配置修改

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: ENC(CcuAd8BLTWTYXQ7e7A/9Sp13O4guEAIBVduewJwRS0XGkRiQoBgJpU8vwPh6Wm/yIQP9M/rBUBgoF/GQnwwnMEaMxWiUOwvBuKmokQohJ215KZM19UDscLg1ipiwAApsmxILz4YATNaxPOfnzYCdfLrwtobwe+zXNcJQJghnltL25JjxQ+JTfg024EOxjVQiCHXFY9dt64LI9dpsy9YbGuQweGU3zt08)
                username: ENC(j8+bLs5bsOG5m1nDnX3pDQ==)
                password: ENC(0Ctf4iJVTmk7X/6nWNLVPsMV9f6aY8sh)

4⃣️启动

项目启动需要指定上面的私钥

赞(0) 打赏

评论 抢沙发