当前位置: 首页 > article >正文

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

一、前言

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

二、SM4算法

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

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

SM4:SM4百科

在这里插入图片描述

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

1. 导入相关加解密依赖

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15to18</artifactId>
    <version>1.76</version>
</dependency>

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.25</version>
</dependency>

2. 编写加解密工具类

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

public class SM4Utils {
   

    /**
     * SM4是对称加密,需要设置一个加解密秘钥
     * <p>
     * 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
     */
    

http://www.kler.cn/a/231582.html

相关文章:

  • Acme PHP - Let‘s Encrypt
  • STM32串口——5个串口的使用方法
  • 微信小程序-prettier 格式化
  • Python 正则表达式使用指南
  • 【C++滑动窗口】1248. 统计「优美子数组」|1623
  • 层归一化和批归一化
  • navigator.mediaDevices.getUserMedia获取本地音频/麦克权限并提示用户
  • 本地部署TeamCity打包发布GitLab管理的.NET Framework 4.5.2的web项目
  • 【Kubernetes】kubectl top pod 异常?
  • Lua迭代器以及各种源函数的实现
  • 从零开始手写mmo游戏从框架到爆炸(十一)— 注册与登录
  • Vuex介绍和使用
  • idea修改项目git地址
  • vue3:28— Vue 2 对 Vue 3 的所有非兼容性改变。(vue3学习笔记终)
  • 目标检测:2如何生成自己的数据集
  • MySQL重要进程
  • YOLOv7独家原创改进:大核卷积涨点系列| Shift-ConvNets,稀疏/移位操作让小卷积核也能达到大卷积核效果 | 2024年最新论文
  • 探讨CSDN等级制度:博客等级、原力等级、创作者等级
  • IntelliJ IDEA 2023.3发布,AI 助手出世,新特性杀麻了!!
  • 微软.NET6开发的C#特性——接口和属性
  • Nexus3之在Window中搭建Maven私服
  • vue3学习——自定义插件,注册组件(引入vue文件报红线)
  • 伯克利研究院推出Ghostbuster用于检测由LLM代笔的文本
  • 计算机网络——01什么是InterNet
  • 【知识整理】管理即服务,识人、识己
  • Ubuntu安装SVN服务并结合内网穿透实现公网访问本地存储文件