tomcat mysql商业加密_Tomcat和JNDI数据源加密配置

JNDI配置过程:

1、打开tomcat/conf/context.xml,在中增加:

auth="Container"

type="javax.sql.DataSource"

password="root"

username="root"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://127.0.0.1:3306/t_twoss"

maxActive="5"

maxIdle="2"

maxWait="3000"

/>

修改成自己数据库信息;

直接在tomcat中更改重启会还原,要在项目中的Servers中找到对应tomcat进行修改。

2、注释掉项目中jdbc.properties中的数据库相关配置。

3、项目中spring-mybatis.xml中先注释原有数据源配置:

再增加新的配置:

4、项目中web.xml中增加jndi配置:

jndi

javax.sql.DataSource

Container

以上,jndi基本配置已完成,下面是加密配置:

1、修改tomcat/conf/context.xml中数据源信息为:

auth="Container"

type="javax.sql.DataSource"

factory="dataSourceFactory.MyBasicDataSourceFactory"

password="41646d696e31323321"

username="admin"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://10.7.132.34:3306/t_twoss"

maxActive="5"

maxIdle="2"

maxWait="3000"

/>

具体属性解释在步骤4

2、新建java工程:

先导入commons-dbcp-1.2.2.jar包,创建两个类,其中Encode用来对数据加密解密;

MyBasicDataSourceFactory继承了上述jar包里的BasicDataSourceFactory类,用来获取数据源,并调用加解密方法:

MyBasicDataSourceFactory类的代码,和dbcp的jar包中的BasicDataSourceFactory类内容一样,只修改如下地方:

原本是:

修改为:

其中Encode.decode()方法为Encode类中的解密方法:

最后将java工程打包为jar包。

3、将java工程jar包,以及commons-dbcp-1.2.2.jar和commons-pool-1.3.jar复制到tomcat下lib目录(两个jar包maven下有)。

4、步骤1中factory属性为java工程中package.MyBasicDataSourceFactory类;

password属性是通过java工程中的Encode类进行加密后的值。

完成重启tomcat。

对username可用相同步骤加密。

具体用什么加密方法可以自己定义自己写;

Encode类的代码可参考:

package dataSourceFactory;

public class Encode {

//加密public static String encode(String password) {

String result = "";

byte[] psd = password.getBytes();

for (int i = 0; i < psd.length; i++) {

result += Integer.toHexString(psd[i] & 0xff);

}

return result;

}

//解密public static String decode(String password) {

String result = "";

password = password.toUpperCase();

int length = password.length() / 2;

char[] hexChars = password.toCharArray();

byte[] d = new byte[length];

for (int i = 0; i < length; i++) {

int pos = i * 2;

d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));

}

result = new String(d);

return result;

}

//字符转字节public static byte charToByte(char c) {

return (byte) "0123456789ABCDEF".indexOf(c);

}

public static void main(String args[]) {

System.out.println(encode("root"));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值