java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot ENC配置文件加密

SpringBoot集成ENC对配置文件进行加密的流程步骤

作者:大猫和小黄

Spring Boot Encoder,即Spring Boot加密模块,它提供了一种简单的方式来集成安全编码功能到Spring Boot应用程序中,它是Spring Security框架的一部分,旨在帮助开发者轻松地处理数据加密,本文给大家介绍了SpringBoot集成ENC对配置文件进行加密的流程步骤

配置文件加密,集成ENC

 <!-- ENC配置文件加密 -->
    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>2.1.2</version>
    </dependency>
  1. 【注意】开始使用的3.1.5版本,启动报错:Reason: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.redis.password' to java.lang.String

    报错原因:因为3.x版本的默认加密算法变了,所以对应配置文件加密算法配置得修改,同时加密的方法也得用新的加密算法计算出加密字符串。

  2. 使用工具类对明文数据进行加密处理,使用完后为了安全起见,可以删除加密盐值

package com.basic.test;

import org.jasypt.util.text.BasicTextEncryptor;
import org.junit.Test;

/**
 * ClassName: CryptTest
 * Package: com.basic.test
 * Description:
 *
 * @Author 王涵
 * @Date 2024/12/17 14:18
 * @Version 1.0
 */
public class CryptTest {

    /**
     * 加密盐值,使用完成后进行删除,或者不能提交到`生产环境`,比如:
     */
    private final static String PASSWORD = "basic";

    @Test
    public void encTest() {
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        // 用于设置加密密钥。密钥是用于加密和解密字符串的关键信息。
        encryptor.setPassword(PASSWORD);

        // 明文1
        String name_encrypt = "wwwbaiducom";
        // 明文2
        String password_encrypt = "123456";

        // 明文加密
        String encrypt1 = encryptor.encrypt(name_encrypt);
        String encrypt2 = encryptor.encrypt(password_encrypt);
        System.out.println("明文加密1:" + encrypt1);
        System.out.println("明文加密2:" + encrypt2);

        // 密文解密
        String decrypt1 = encryptor.decrypt(encrypt1);
        String decrypt2 = encryptor.decrypt(encrypt2);
        System.out.println("密文解密1:" + decrypt1);
        System.out.println("密文解密2:" + decrypt2);
    }
}
 # 主库数据源
 master:
     url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
     username: root
     password: ENC(dboFmyYdJOKJYKt1DX/jmzPBcipbHHeP)

运行时配置

启动类配置@EnableEncryptableProperties

package com.basic;

import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

/**
 * @Author WangHan
 * 心中那自由的世界,如此的清澈高远。
 * @Date 2024/12/6 14:47
 * @Description 启动程序
 */
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableEncryptableProperties
public class BasicApplication
{
    public static void main(String[] args)
    {
        // 热部署生效 true 开启热部署 false 关闭热部署
        System.setProperty("spring.devtools.restart.enabled", "false");
        SpringApplication.run(BasicApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  基础框架启动成功   ლ(´ڡ`ლ)゙");
    }
}

jar包运行指定加密规则

cd /opt/home/test/
nohup java -Xms512m -Xmx512m -jar -Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX test-base.jar --spring.profiles.active=dev > test-base.out 2>&1 &
echo start test-base		

部署到tomcat

export JAVA_OPTS="-Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX"

以上就是SpringBoot集成ENC对配置文件进行加密的流程步骤的详细内容,更多关于SpringBoot ENC配置文件加密的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文