mybatis入门-数据库配置密码加密连接

本文介绍两种数据库连接加密方法,一种是通过重写`BasicDataSource`接口的`setPassword`方法实现密码加密,另一种是在`SqlSessionFactory`中通过程序传递方式加密参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        常见个人开发基本都是直接使用明文密码配置数据库连接。但在一些重要数据存在时,在大数据横行时期,数据就相当重要了,比如银行,若是,用明文密码给爬到,那么造成数据泄露是很严重的。

        因此,在这提供俩个密码加密连接的方法。

第一种:直接重写BasicDataSource接口的setPassword方法;

数据源,我用的是com.alibaba.druid.pool.DruidDataSource;你们看你的mybatis-spring.xml用的是啥,就继承哪个类。

package org.test.base.common;


import java.io.UnsupportedEncodingException;
import java.util.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.druid.pool.DruidDataSource;

public class TeradataConnetion extends DruidDataSource {
	/**
	 * 
	 */
	private static final long serialVersionUID = 5356438661505332271L;
	private final static Logger logger = LoggerFactory.getLogger(TeradataSource.class);
	public TeradataSource() {
		super();
	}
	@Override
	public void setPassword(String password){
		try{
			this.password = decode(password);
		}catch(Exception e){
			logger.error(e.getMessage());
		}
	}
	@Override
	public void setUsername(String username) {
		try{
			this.username = decode(username);
		}catch(Exception e){
			logger.error(e.getMessage());
		}
	}
	
	
	public static String encodeToString(String password){
		//编码
	    String str=null;
	    try {
	        str = Base64.getEncoder().encodeToString(password.getBytes("utf-8"));
	        System.out.println("编码结果为:"+str);
	    } catch (UnsupportedEncodingException e) {
	    	logger.error(e.getMessage());
	    }
	    
		return str;
	}
	public static String decode(String password){
		//解码
		String str=null;
	    byte[] str1=Base64.getDecoder().decode(password);
	    try {
	    	str = new String(str1,"utf-8");
	        System.out.println("解码结果为:"+str);
	    } catch (UnsupportedEncodingException e) {
	    	logger.error(e.getMessage());
	    }
		return str;
	}
	
//	public static void main(String[] args) {
//		encodeToString("root");
//		decode(encodeToString("root"));
//	}
}

重写setPassword之后,我们可以修改mybatis-spring.xml数据库配置,如下:

 

第二种:使用程序传递方式传递参数

代码示例:在sqlsessionfactory中处理

Stirng resource = "mybatis-config.xml";
InputStream inputStream;
InputStream in = Resources.getResourceAsStream("jdbc.properties");
Properties props = new Properties();
props.load(in);
String username = props.getProperty("username ");
String password= props.getProperty("password");
props.put("username ",CodeUtils.decode(username));
props.put("password",CodeUtils.decode(password));
inputStream = Reasources.getResourceAsStream(resource );
SqlSessionFactory ssf = new SqlSessionFactory Builder().build(inputStream ,props );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值