您的位置:首页 > 产品设计 > UI/UE

一分钟教你解密Druid配置加密后的密码

2017-03-04 21:58 633 查看
Druid是阿里巴巴开源平台上的一个数据库连接池。网上很多资料都是关于Druid数据源的配置与使用,却一直找不到一篇文章教人解密。本文教你如何解密Druid配置文件中加密后的密码。

问题背景:

项目组里有个数据库连接配置文件,里面的内容是加密后的密码和一个公钥。如下:

公钥:
publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKUAMHrATatXwODDAcHxfIcG6diYsw0l0Qfj/NJivHXMVs5JRYf4vao2nEXB+BxA3gHO0er3KiGpz2ieQjPgSF8CAwEAAQ==

加密以后的密码:
password=Q+zSOJytnRLmFHxB9YdFXlMnJj2y60r0Z11OFTRTOYQ/4kzKDWIU6AtFUv+DeVLuitKPGXGIkmalAXaoApOlzw==


有个同事想根据此信息得到数据库的连接密码,怎么解决?

解决方法:

使用ConfigTools.decrypt(publicKey,password)方法即可。(要放在有druid-1.0.12.jar的项目上运行)

public class ConfigToolsTest extends TestCase {

public void test_0() throws Exception {

String publickey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKUAMHrATatXwODDAcHxfIcG6diYsw0l0Qfj/NJivHXMVs5JRYf4vao2nEXB+BxA3gHO0er3KiGpz2ieQjPgSF8CAwEAAQ==";
String password = "Q+zSOJytnRLmFHxB9YdFXlMnJj2y60r0Z11OFTRTOYQ/4kzKDWIU6AtFUv+DeVLuitKPGXGIkmalAXaoApOlzw==";

System.out.println( ConfigTools.decrypt(publickey, password) );
}


至此,问题解决。

解决问题过程分享:

如何成为一名优秀的软件工程师,我认为解决实际问题的能力很重要。下面是我如何分析和解决这个问题的过程,希望以小见大,让更多的人拥有解决问题的思路, 而不仅仅是知道答案本身。

首先,项目能链接上数据库,程序肯定有个解密过程,找到该加密解密程序成为关键。根据数据库配置文件找到加载该文件的Spring配置文件。

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
...
...
<property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${publickey}" />
</bean>


然后,上网搜索DruidDataSource加密解密相关资料,发现是阿里巴巴的开源项目,并且很多资料提及ConfigTools,但是大部分资料都是教人如何配置加密密码等等 (估计是因为源码没有放开解密方法,没人看源代码)。

于是,我下载了Druid在Github里的源代码,并找到了ConfigToolsTest.java文件。

接着,答案很快就找到了,ConfigTools有个encrypt和decrypt方法。那么就直接在项目里运行一下decrypt方法就行了。

Druid项目源码:

https://github.com/alibaba/druid
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Druid 解密 阿里巴巴