一分钟教你解密Druid配置加密后的密码
2017-03-04 21:58
633 查看
Druid是阿里巴巴开源平台上的一个数据库连接池。网上很多资料都是关于Druid数据源的配置与使用,却一直找不到一篇文章教人解密。本文教你如何解密Druid配置文件中加密后的密码。
有个同事想根据此信息得到数据库的连接密码,怎么解决?
至此,问题解决。
首先,项目能链接上数据库,程序肯定有个解密过程,找到该加密解密程序成为关键。根据数据库配置文件找到加载该文件的Spring配置文件。
然后,上网搜索DruidDataSource加密解密相关资料,发现是阿里巴巴的开源项目,并且很多资料提及ConfigTools,但是大部分资料都是教人如何配置加密密码等等 (估计是因为源码没有放开解密方法,没人看源代码)。
于是,我下载了Druid在Github里的源代码,并找到了ConfigToolsTest.java文件。
接着,答案很快就找到了,ConfigTools有个encrypt和decrypt方法。那么就直接在项目里运行一下decrypt方法就行了。
Druid项目源码:
https://github.com/alibaba/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生成的公钥私钥来对密码进行加密解密
- 配置文件项密码加密与解密
- 使用Druid生成加密密码,实现mysql数据库连接用户密码加密解密
- 使用Druid数据库连接池,配置ConfigFilter对数据库密码加密
- druid对数据库连接密码加密和解密
- Druid配置数据库用户密码加密
- [★] 本地配置文件中存储密码 之 加密解密
- druid 数据源密码加密配置
- druid-1.0.13 数据库配置文件密码加密
- NET 本地配置文件中存储密码 之 加密解密
- druid数据库账号密码加密解密
- ASP.NET2.0中配置文件的加密与解密(转载)
- 采用密码加密的javascript字符串加密、解密程序
- 利用TEA算法实现加密密码文件生成与解密
- Web.Config配置节加密和解密
- Web.Config配置节加密和解密
- 加密和解密配置节
- ASP.NET2.0中配置文件的加密与解密
- VC对密码加密和解密函数
- 使用aspnet_regiis.exe 对配置字节的加密解密选项