Druid数据源密码加密解密
密码加密
-
在本地仓库中找到对应版本的Durid版本的jar包位置(例:xxx/com\alibaba\druid\1.1.10)
-
在当前位置打开Powershell / cmd 窗口
-
执行以下java命令生成加密后的密码、秘钥及公钥(将password改为需要加密的密码)
java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools password >encryption.txt
-
在当前目录下的encryption.txt文件中,会生成以下内容
privateKey:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmfTtzIvYkJL3eRxQ+tAk6ie9usxvH6/wNLG5DGSrYQf+19jabhB/Uzdsc6J3OxIPMVkAFhhmdo+BxDOdp+GLowIDAQABAkA5sWY3g6RpMRnZ4bma88sRkEjyKk/uMPEz3fG5ajQqzMxWSlXgXElLIMwPSmRAXRU6v1aOBkB8YZRBVzDoY0I5AiEA6ttYEp5VudDtI6Q69w2yoU2yCIGRNUMwMrtPPdmvuP8CIQCn0Ryi91lag5JFDoF4qgdHXUhTWSUxJwJHh8b8mxWpXQIgYHhI7Rzsya7wObu0HNcbkPaBMs1GAELhAXW/TwCkFbECIQCh36Ovzsfx91fwJL3elqPOwrwxKZwmfWpFdUMMBswuQQIgJS0X3677uYpzu1C570ESJ0EMAMjblv6PUEPsqAGkV3E= publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJn07cyL2JCS93kcUPrQJOonvbrMbx+v8DSxuQxkq2EH/tfY2m4Qf1M3bHOidzsSDzFZABYYZnaPgcQznafhi6MCAwEAAQ== password:VYNDd5/7adxYpgQbCzIBd2wZAuI4o6nIFeuTwLB50vtMsUMDHHxE5jOkwDO1IiwdHjso9PIcWdC1Wa1W8ZspUA==
-
Druid数据源dataSource配置
<!-- 基于Druid数据库链接池的数据源配置 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性driverClassName、 url、user、password --> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 配置初始化大小、最小、最大 --> <!-- 通常来说,只需要修改initialSize、minIdle、maxActive --> <property name="initialSize" value="2" /> <property name="minIdle" value="2" /> <property name="maxActive" value="30" /> <property name="testWhileIdle" value="false" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="5000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="30000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 解密密码必须要配置的项 --> <property name="filters" value="${jdbc.filters}" /> <property name="connectionProperties" value="${jdbc.connectionProperties}"/> </bean>
-
jdbc.properties
## JDBC set jdbc.url=jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true jdbc.username=root jdbc.password=VYNDd5/7adxYpgQbCzIBd2wZAuI4o6nIFeuTwLB50vtMsUMDHHxE5jOkwDO1IiwdHjso9PIcWdC1Wa1W8ZspUA== jdbc.publickey = MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJn07cyL2JCS93kcUPrQJOonvbrMbx+v8DSxuQxkq2EH/tfY2m4Qf1M3bHOidzsSDzFZABYYZnaPgcQznafhi6MCAwEAAQ== jdbc.connectionProperties=config.decrypt=true;config.decrypt.key=${jdbc.publicKey} jdbc.filters=stat,config
密码解密
import com.alibaba.druid.filter.config.ConfigTools;
public class DecryptPassword {
public static void main(String[] args) throws Exception {
String publickey = "publicKey";
String password = "password";
String pwd = ConfigTools.decrypt(publickey, password);
System.out.println(pwd);
}
}