甜心宝宝的gravatar头像
甜心宝宝 2014-09-30 13:28:25

java log4j用poolman配置数据库连接池敏感信息如何实现加密解密?

我的项目用log4j记录日志,用poolman来配置数据库连接池。现在我已经成功的用poolman和log4j连接到数据库并正常运行程序了。只是在poolman.xml中配置的都是明文的用户名,密码和数据库链接信息,我想要把这些敏感信息加密,然后在读取该配置文件的时候解密后再使用。 请教在什么地方进行解密操作,谢谢!

所有回答列表(1)
最代码官方的gravatar头像
最代码官方  LV167 2014年9月30日

 

poolman读取文件不支持加密解密的机制的话只能自己修改源码来实现了吧?

------------------------------------------------------------------------

通过万能的stackoverflow查找到了可行的解决思路:

1.编写自己的DataSourceFactory类,比如:

package com.zuidaima.test;
import java.util.Properties;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

public class CustomDataSourceFactory extends UnpooledDataSourceFactory {
    @Override
    public void setProperties(Properties properties) {
        String user = null;
        String pass = null;

        // decrypt the file, use some fancy obfuscation, connect somewhere to get
        // the username and password dynamically at startup, whatever...
        //
        // user = "JohnDoe";
        // pass = "p@$$word";

        properties.put("username", user);
        properties.put("password", pass);
        super.setProperties(properties);
    }
}
<dataSource type="com.zuidaima.test.CustomDataSourceFactory">
    <property name="driver" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://zuidaima.com:3306/zuidaima_com" />
</dataSource>

参考stackoverflow:http://stackoverflow.com/questions/8516989/encrypt-a-properties-file-for-ibatis

2.通过java开源技术框架Jasypt实现

datasource.driver=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://zuidaima.com:3306/zuidaima_com
datasource.username=zuidaima.com
datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)

参考stackoverflow:http://stackoverflow.com/questions/23375989/encrypting-properties-file-and-persistence-xml

3.通过OWASP Project解决

参考:http://stackoverflow.com/questions/11645477/how-to-store-password-as-encrypted-in-properties-file-in-spring

4.最代码也有类似代码:java spring中对properties属性文件加密及其解密

评论(3) 最佳答案
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友