使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置(读取时自动解密)

一、前言

在业务系统开发过程中,我们必不可少的会使用数据库,在应用开发过程中,数据库连接信息往往都是以明文的方式配置到yaml配置文件中的,这样有密码泄露的风险,那么有没有什么方式可以避免呢?方案当然是有的,就是对数据库密码配置的时候进行加密,然后读取的时候再进行解密,这样就可以避免敏感信息泄露了。

二、SM4算法

目前市面上流行的加密算法有很多,本次我们采用国产加密算法SM4进行介绍。

SM4加密算法是一种分组对接加密算法,详细信息可以参考百度百科:

SM4:SM4百科

使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置(读取时自动解密)_第1张图片

三、数据库配置信息加解密

1. 导入相关加解密依赖

<dependency>
    <groupId>org.bouncycastlegroupId>
    <artifactId>bcprov-jdk15to18artifactId>
    <version>1.76version>
dependency>

<dependency>
    <groupId>cn.hutoolgroupId>
    <artifactId>hutool-allartifactId>
    <version>5.8.25version>
dependency>

2. 编写加解密工具类

import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.symmetric.SM4;

public class SM4Utils {
   

    /**
     * SM4是对称加密,需要设置一个加解密秘钥
     * 

* System.out.println(Arrays.toString("@Jhx2024#$%^&*!+".getBytes(StandardCharsets.UTF_8))); * 特别注意字符串key的长度需要16位 */ private static final byte[] keys = new byte[]{ 64, 74, 104, 120, 50, 48, 50, 52, 35, 36, 37, 94, 38, 42, 33, 43}; /** * 创建一个SM4加解密对象 */ private static final SM4 sm4 = SmUtil.sm4(keys); /** * 设置一个标识符,标识@SM4@- 开头的字符串是经过SM4加密的需要解密 */ public static final String SM4_PREFIX = "@SM4@-"; /** * 对字符串进行加密 * * @param value * @return */

你可能感兴趣的:(信创,springboot,java,web,spring,boot,SM4,国密,jasypt,yaml属性加密)