首页 > 数据库 >springboot 简单设置mysql用户名密码加密

springboot 简单设置mysql用户名密码加密

时间:2022-12-13 00:46:08浏览次数:65  
标签:AES 用户名 String aes mode KEY mysql new springboot

 

如何将yml文件中暴露的数据库用户名和密码由明文改为密文,提高安全性。

个人觉得是最简单的方式实现

yml代码,用户名密码使用文章后面提供的加密算法或者自行寻找方法

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
    username: 这是密文用户名
    password: 这是密文密码

配置DataSource的bean(加密解密方法可自行寻找)

@Configuration
public class DataSourceConfig {

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;

    @Bean
    @Primary
    public DataSource dataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(url);
        // 这里把从yml文件拿到的用户名密码解密即可
        druidDataSource.setUsername(SymmetricCryptoUtil.decString(username));
        druidDataSource.setPassword(SymmetricCryptoUtil.decString(password));
        druidDataSource.setDriverClassName(driverClassName);
        return druidDataSource;
    }

提供一个网上找的hutool的加密解密类(https://blog.csdn.net/Dong_Zi8/article/details/125196560)

public class SymmetricCryptoUtil {
    /**
     * 16字节
     */
    private static final String ENCODE_KEY = "1234567812345678";
    private static final String IV_KEY = "0000000000000000";

    /**
     * 加密
     * @param string string
     * @return
     */
    public static String encString(String string){
        return encryptFromString(string, Mode.CBC, Padding.ZeroPadding);
    }

    public static String decString(String string) {
        return decryptFromString(string, Mode.CBC, Padding.ZeroPadding);
    }

    public static String encryptFromString(String data, Mode mode, Padding padding) {
        AES aes;
        if (Mode.CBC == mode) {
            aes = new AES(mode, padding,
                    new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"),
                    new IvParameterSpec(IV_KEY.getBytes()));
        } else {
            aes = new AES(mode, padding,
                    new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"));
        }
        return aes.encryptBase64(data, StandardCharsets.UTF_8);
    }

    public static String decryptFromString(String data, Mode mode, Padding padding) {
        AES aes;
        if (Mode.CBC == mode) {
            aes = new AES(mode, padding,
                    new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"),
                    new IvParameterSpec(IV_KEY.getBytes()));
        } else {
            aes = new AES(mode, padding,
                    new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"));
        }
        byte[] decryptDataBase64 = aes.decrypt(data);
        return new String(decryptDataBase64, StandardCharsets.UTF_8);
    }
}

 

完毕

标签:AES,用户名,String,aes,mode,KEY,mysql,new,springboot
From: https://www.cnblogs.com/kmanngg/p/16977535.html

相关文章

  • 非局域网远程访问MySQL
    使用内网穿透解决,市面上说道最多的是“花生壳”主要操作见这篇官方说明但其中提到的什么花生棒(第二、三点)完全不用管,应该算是产品推销。登录后选“新增内网映射”进入......
  • MySQL的事务
    MySQL事务MySQL事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,......
  • SpringBoot 自动装配的原理分析
    关于SpringBoot的自动装配功能,相信是每一个Java程序员天天都会用到的一个功能,但是它究竟是如何实现的呢?今天阿粉来带大家看一下。自动装配案例首先我们通过一个案例......
  • SpringBoot常用注解
    @SpringBootApplication定义在main方法入口类,用于启动springboot应用项目@EnableAutoConfiguration让springboot根据类路径中的jar包依赖当前项目进行配置@ImportRes......
  • MySQL数据库操作
    基本操作mysql-uroot-p 连接数据库showdatabases 查看有什么库showtables查看有什么表use库名[进入库]desc表名......
  • 力扣182(MySQL)-查找重复的电子邮箱(简单)
    题目:编写一个SQL查询,查找 Person 表中所有重复的电子邮箱。示例: 解题思路:方法一:使用groupby按Email来分组,然后使用having选择count(id)>1的就可以得到重复的Em......
  • ZABBIX监控远程MySQL数据库
    zabbix3.0server已自带MySQL的模板了,只需配置好agent客户端,然后在web端主机增加模板就行了。同时部署:zabbix_agent安装zabbix_agent客户端操作:1.数据库用户授权登录my......
  • 利用Mysql提权的步骤以及一种低级错误的说明
    利用Mysql提权的步骤以及一种低级错误的说明通过一些方式获取了目标主机mysql的用户名和密码,这时我们想通过mysql来执行系统命令,此时我们可以考虑使用UDF进行提权。需要提......
  • SpringBoot+Vue实现第三方Gitee登录(二)
    1.准备工作_OAuth2(官网地址:开发流程)1.1 API使用条款  1.OSCHINA用户是资源的拥有者,需尊重和保护用户的权益。  2.不能在应用中使用OSCHINA的名称。  3.......
  • MySql的常用函数
    调用:select函数名(实参列表)from表;1、单行函数如concat、length、iffnull等2.分组函数功能:做统计使用(统计函数、聚合函数、组函数)一、字符函数......